建设银行网站查询业务收费吗,网站建设需求,外卖优惠券网站怎么做,聊城开发app公司前言
本章介绍调用函数时可使用的正式参数。
参数
以下是调用函数时可使用的正式参数类型#xff1a;
必需参数关键字参数默认参数不定长参数
必需参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用 printme() 函数#xff0c;你必须传入一…前言
本章介绍调用函数时可使用的正式参数。
参数
以下是调用函数时可使用的正式参数类型
必需参数关键字参数默认参数不定长参数
必需参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用 printme() 函数你必须传入一个参数不然会出现语法错误
实例(Python 3.0)
#!/usr/bin/python3#可写函数说明
def printme( str ):打印任何传入的字符串print (str)return# 调用 printme 函数不加参数会报错
printme()以上实例输出结果
Traceback (most recent call last):File test.py, line 10, in moduleprintme()
TypeError: printme() missing 1 required positional argument: str关键字参数
关键字参数和函数调用关系紧密函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 printme() 调用时使用参数名
实例(Python 3.0)
#!/usr/bin/python3#可写函数说明
def printme( str ):打印任何传入的字符串print (str)return#调用printme函数
printme( str csdn教程)以上实例输出结果
csdn教程以下实例中演示了函数参数的使用不需要使用指定顺序
实例(Python 3.0)
#!/usr/bin/python3#可写函数说明
def printinfo( name, age ):打印任何传入的字符串print (名字: , name)print (年龄: , age)return#调用printinfo函数
printinfo( age50, namecsdn )以上实例输出结果
名字: csdn
年龄: 50默认参数
调用函数时如果没有传递参数则会使用默认参数。以下实例中如果没有传入 age 参数则使用默认值
实例(Python 3.0)
#!/usr/bin/python3#可写函数说明
def printinfo( name, age 35 ):打印任何传入的字符串print (名字: , name)print (年龄: , age)return#调用printinfo函数
printinfo( age50, namecsdn )
print (------------------------)
printinfo( namecsdn )以上实例输出结果
名字: csdn
年龄: 50
------------------------
名字: csdn
年龄: 35不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数和上述 2 种参数不同声明时不会命名。基本语法如下
def functionname([formal_args,] *var_args_tuple ):函数_文档字符串function_suitereturn [expression]加了星号 *的参数会以元组(tuple)的形式导入存放所有未命名的变量参数。
实例(Python 3.0)
#!/usr/bin/python3# 可写函数说明
def printinfo( arg1, *vartuple ):打印任何传入的参数print (输出: )print (arg1)print (vartuple)# 调用printinfo 函数
printinfo( 70, 60, 50 )以上实例输出结果
输出:
70
(60, 50)如果在函数调用时没有指定参数它就是一个空元组。我们也可以不向函数传递未命名的变量。如下实例 实例(Python 3.0)
#!/usr/bin/python3# 可写函数说明
def printinfo( arg1, *vartuple ):打印任何传入的参数print (输出: )print (arg1)for var in vartuple:print (var)return# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )以上实例输出结果
输出:
10
输出:
70
60
50还有一种就是参数带两个星号 **基本语法如下
def functionname([formal_args,] **var_args_dict ):函数_文档字符串function_suitereturn [expression]加了两个星号 **的参数会以字典的形式导入。
实例(Python 3.0)
#!/usr/bin/python3# 可写函数说明
def printinfo( arg1, **vardict ):打印任何传入的参数print (输出: )print (arg1)print (vardict)# 调用printinfo 函数
printinfo(1, a2,b3)以上实例输出结果
输出:
1
{a: 2, b: 3}声明函数时参数中星号 * 可以单独出现例如:
def f(a,b,*,c):return abc如果单独出现星号 *则星号 * 后的参数必须用关键字传入 def f(a,b,*,c):
... return abc
... f(1,2,3) # 报错
Traceback (most recent call last):File stdin, line 1, in module
TypeError: f() takes 2 positional arguments but 3 were givenf(1,2,c3) # 正常
6匿名函数
Python 使用 lambda 来创建匿名函数。
所谓匿名意即不再使用 def 语句这样标准的形式定义一个函数。
lambda 只是一个表达式函数体比 def 简单很多。lambda 的主体是一个表达式而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。lambda 函数拥有自己的命名空间且不能访问自己参数列表之外或全局命名空间里的参数。虽然 lambda 函数看起来只能写一行却不等同于 C 或 C 的内联函数后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法
lambda 函数的语法只包含一个语句如下
lambda [arg1 [,arg2,.....argn]]:expression设置参数 a 加上 10:
实例
x lambda a : a 10
print(x(5))以上实例输出结果
15以下实例匿名函数设置两个参数
实例(Python 3.0)
#!/usr/bin/python3# 可写函数说明
sum lambda arg1, arg2: arg1 arg2# 调用sum函数
print (相加后的值为 : , sum( 10, 20 ))
print (相加后的值为 : , sum( 20, 20 ))以上实例输出结果
相加后的值为 : 30
相加后的值为 : 40我们可以将匿名函数封装在一个函数内这样可以使用同样的代码来创建多个匿名函数。
以下实例将匿名函数封装在 myfunc 函数中通过传入不同的参数来创建不同的匿名函数
实例
def myfunc(n):return lambda a : a * nmydoubler myfunc(2)
mytripler myfunc(3)print(mydoubler(11))
print(mytripler(11))以上实例输出结果
22
33return 语句
return [表达式] 语句用于退出函数选择性地向调用方返回一个表达式。不带参数值的 return 语句返回 None。之前的例子都没有示范如何返回数值以下实例演示了 return 语句的用法
实例(Python 3.0)
#!/usr/bin/python3# 可写函数说明
def sum( arg1, arg2 ):# 返回2个参数的和.total arg1 arg2print (函数内 : , total)return total# 调用sum函数
total sum( 10, 20 )
print (函数外 : , total)以上实例输出结果
函数内 : 30
函数外 : 30强制位置参数
Python3.8 新增了一个函数形参语法 / 用来指明函数形参必须使用指定位置参数不能使用关键字参数的形式。
在以下的例子中形参 a 和 b 必须使用指定位置参数c 或 d 可以是位置形参或关键字形参而 e 和 f 要求为关键字形参:
def f(a, b, /, c, d, *, e, f):print(a, b, c, d, e, f)以下使用方法是正确的:
f(10, 20, 30, d40, e50, f60)以下使用方法会发生错误:
f(10, b20, c30, d40, e50, f60) # b 不能使用关键字参数的形式
f(10, 20, 30, 40, 50, f60) # e 必须使用关键字参数的形式