Day05-Python函数
1、定义一个函数
规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号 : 起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
一般格式:
def 函数名(参数列表):
函数体
hello函数:
def hello(name):
print("Hello", name)
#print可以一次输出多个对象,对象之间用逗号分隔。(还以为是用加号呢!)
# 调用函数
hello("lamb")
max函数
def max(a,b):
if(a>=b):
return a
else:
return b
print(max(2,3))
#3
因为python函数的用法其实和java、c等类似,就不详细说了。对了,python函数的形参不用声明类型,毕竟声明变量是也不需要声名类型嘛……
提一下不定长参数(感觉怎么辣么像指针!!!?)
1、一个*号的参数
加了星号 * 的形参会以元组(tuple)的形式导入,存放所有未命名的变量参数。实参可以为空,即传递一个空元组。如果单独出现星号 * 后的参数必须用关键字传入。
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vartuple)
# 调用printinfo 函数
printinfo( 70, 60, 50 )
#输出70 (60,50)
2、两个*号的形参
加了两个星号 ** 的参数会以字典的形式导入。
def printinfo( arg1, **vardict ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vardict)
# 调用printinfo 函数
printinfo(1, a=2,b=3)
#输出:1 {'a':2, 'b':3}
匿名函数:
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
- lambda 只是一个表达式,函数体比 def 简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))
强制位置参数:
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, b=20, c=30, d=40, e=50, f=60) # b 不能使用关键字参数的形式
f(10, 20, 30, 40, 50, f=60) # e 必须使用关键字参数的形式 如果单独出现星号 * 后的参数必须用关键字传入。

浙公网安备 33010602011771号