Python函数基础
行参,实参
def greet_name(username):
print("Hello," + username.title() + "!")
greet_name('jesse')
形参——在函数 greet_name()的定义中,变量 username为形参——函数完成其工作所需的一项信息
实参——函数在调用时传递给函数的信息,代码 greet_name('jesse')中 'jesse'为实参
位置参数
在调用函数时,Python必须将函数中的实参都关联到函数中定义的形参,且关联的顺序为形参的顺序
def test(uername,sex):
print("He name is:" + uername + ",He is sex is:" + sex)
test("Jonh","man")
在调用函数时,需要给函数传递人名和性别两个参数,代码中"Jonh"传递给username,"man"传递给sex,传递的实参必须与函数定义时的形参对应。
关键字实参
def test(x,y): print(x) print(y) test(y=1,x=2)
关键字实参是传递给函数的名称-值对,关键字实参的顺序无关紧要。当参数中既有位置参数又有关键字参数时,位置参数必须在关键字参数之后。
def test(x,y): print(x) print(y) test(1,y=2)
上述代码,如果在调用的时候写成 test(y = 2,1),会报错。如果写成 tes(1,x=2),也会报错,因为此时python已经将1传递给了x。
默认值
在编写函数时,可以给形参指定默认值
def test(name,sex,age = 23):
print("name is :" + name)
print("age is: %s" %age)
print("sex is:" + sex)
test("Jonh","man")
默认值参数,在订单函数时已经给形参赋值,如果在调用函数时,没有给默认值的形参传递实参的话,函数执行时会采用默认值,如果赋值了,会采用新值,注意:函数在定义时,默认值参数必须在非默认值参数之后,函数调用传递实参时,也需要按照位置参数的顺序一一对应。
传递列表
可以向函数中的形参传递列表形式的实参
def greet_users(names): for name in names: msg = "Hello," + name.title() + "!" print(msg) usernames = ['jack','tom','poli'] greet_users(usernames)
上述代码中实参 usernames 以列表的形式传递给函数中定义的形参 names
传递任意数量的实参
有时候我们不知道函数需要接收多少个实参,Python允许函数在调用的语句中接收任意数量的实参。
def make_pizza(*toopings):
print(toopings)
make_pizza('pepperoni')
make_pizza('mushrooms','green peppers','extra cheese')
形参名 *toopings 中 * 表示让Python创建一个名为toopings的空元组,并将所有接收到的值都封装在这个元组中,即使只接收到一个值也是如此。*toopings接收的是任意数量的位置参数转化成元组的形式
位置实参与任意数量实参结合
在定义函数时,如果要让函数接收不同类型的实参时,任意数量的形参必须放在位置参数之后,Python先匹配位置实参和关键字实参
def make_pizza(size,*toopings):
print("Making a " + str(size) + "-inch pizz with the following toopings:" )
for tooping in toopings:
print("-" + tooping)
make_pizza(16,'pepperoni')
make_pizza(12,'mushrooms','green peppers','extra cheese')
上述代码中,Python将第一个实参传递给size,将其余的所有值都存储在元组toppings中,在函数中调用
使用字典形式的实参
有时候函数需要接收任意数量的实参,但是预先不知道是什么样的数据,这时候可以以键-值对的形式传递给函数
def test(**info): print(info) test(name = 'Jack',age = 23, sex = 'man')
打印结果:
{'name': 'Jack', 'age': 23, 'sex': 'man'}
上述代码中**info将传递的关键字参数转化为字典类型。注意:在函数定义的时候,字典类型的形参必须定义在最后
浙公网安备 33010602011771号