1、定义一个函数
- 以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
由于python程序是属于按顺序执行,必须要先定义或引入函数,在后续中使用函数,除非存在main函数
2、可变与不可变(immutable)对象
python 函数的参数传递:
-
不可变类型:值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
-
可变类型:引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
def test(i):i = i + 2print(i)a = 2
test(a)
print(a)
4
2
3、关键字参数
如果函数声明了参数,则调用时必须要传递。
或者再参数定义时,设置默认值
def defParams(str = 'string'):print(str)defParams()
针对多个参数,传参时定义关键词,避免顺序传入
# 可写函数说明
def printinfo(name, age=5):print("Name: ", name)print("Age ", age)# 调用printinfo函数
printinfo(age=50, name="miki")
printinfo(name="miki")
Name: miki
Age 50
Name: miki
Age 5
4、不定长参数
在函数定义的最后一个参数前添加 星号 * 标记,用于接收传入的剩余参数
# 不定长参数函数
def pt(arg1, *args):print(arg1)print(args)pt(1, 2, 3, 4, 5, 6)
1
(2, 3, 4, 5, 6)
5、匿名函数
通过使用 lambda 关键词,以简短的代码定义函数
# 匿名函数
sum = lambda arg1, arg2: arg1 + arg2
print(sum(1, 2))
6、main 启动函数
以如下代码的第一行,固定写法
if __name__ == '__main__': print ('now __name__ is %s' %__name__)