一.函数的声明:
其中,name
是形参.
def hello(name):
print('Hello,'+name)
二.函数的调用
hello('张三')
三.关键字实参的使用
优点:在实参传递值的时候,可以用键值对的方式传参,不用考虑传参顺序
def showInfo(name,age):
print('姓名:'+name+',年龄:'+age)
showInfo( age='18',name='赵信')
输出:
姓名:赵信,年龄:18
四.给函数形参设置默认值
1.隐式传参
在不传递这个参数的情况下,自动赋上默认值(隐式)
注意:没有有默认值的参数要放在前面,否则报错
Python编写规范:给形参设置默认值的时候,参数(sex='男'
)等号两边不要有空格,即便不会报错
def showInfoDefault(name,age,sex='男'):
print('姓名:'+name+',性别:'+sex+',年龄:'+age)
showInfoDefault(name='赵信', age='18')
输出:
姓名:赵信,性别:男,年龄:18
2.显式传参
showInfoDefault(age='18',name='春哥', sex='女')
输出:
姓名:春哥,性别:女,年龄:18
五.有返回值的函数
1.声明
def getResult(a,b):
return a+b
2.调用
c = getResult(1, 2)
print('求和结果:'+str(c))
输出:
求和结果:3
六.禁止函数修改原列表
有时函数需要用到某列表中的数据,但是又不能修改这个列表数据,此时可用切片,作为实参传入。
bosses = ['马小云', '李小红', '马小腾', '雷小军']
def addBoss(list):
list.append('贾小亭')
print(list)
# 在此传入切片即可
addBoss(bosses[:])
print(bosses)
输出:
['马小云', '李小红', '马小腾', '雷小军', '贾小亭']
['马小云', '李小红', '马小腾', '雷小军']
七.函数接收任意数量实参
注意:形参是个元组类型,而非列表类型,传入列表的话,只能作为元组的一个元素
def addAnimal(*box):
print(box)
#传入多个参数
addAnimal('河马','大象','犀牛')
输出:
('河马', '大象', '犀牛')
注意:如果多种参数种类,应该把接收任意数量实参的形参(元组),放在最后的位置定义。
本例中,name
对应北京,*box
对应动物元组,需放在最后定义,否则报错
def shownimal(name,*box):
print(name+'动物园有这些动物:'+str(box))
shownimal('北京','大熊猫','大象','犀牛')
输出:
北京动物园有这些动物:('大熊猫', '大象', '犀牛')
八.函数接收任意数量的键值对实参
前两个形参city
,address
是字符串类型,**zoo
是字典类型的,所以赋值要用大熊猫='panda'
的格式
def shownimal(city,address,**zoo):
print(city+address+'动物园有这些动物:\n')
for ch,en in zoo.items():
print('中文名:'+ch+',英文名:'+en)
shownimal('北京','西直门',大熊猫='panda',大象='elephant',犀牛='rhino')
输出:
北京西直门动物园有这些动物:
中文名:大熊猫,英文名:panda
中文名:大象,英文名:elephant
中文名:犀牛,英文名:rhino
九.函数的封装调用
引用别的类中的函数,需要通过下列方式:
1.引入整个模块
新建library.py文件
def hello(name):
print('Hello,'+name)
def goodbye(name):
print('Goodbye,'+name)
在另一个类中引用:
import library
library.hello('张三')
输出:
Hello,张三
在Eclipse中使用import导入可能会报错,这是因为该项目的路径没有配置为环境变量,所以找不到引用的文件,解决方法:
在project右击打开菜单 ->选择properties->选择”PyDev-Interpreter/Grammar”->点击链接”Click here to configure an interpreter not listed.” -> 在”Libraries”tab内,点击”new folder”,把工作空间中引入项目包路径粘贴进来->点击”ok”,重启Eclipse。
2.只引入要用的函数:
from library import goodbye
goodbye('李四');
输出:
Goodbye,李四
3.给引入的函数指定别名
注意:一旦指定了别名,就必须要用别名调用,而不能继续使用原来函数名了
from library import goodbye as gb
gb('李四');
4.引入所有函数
引入所有函数,所有函数都可以直接调用了
from library import *
hello('张三')
goodbye('李四');
5.给模块起别名
模块名一旦设置,原来的模块名也就不能用了,只能通过别名调用
import library as lib
lib.hello('张三')