定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以
d
e
f
关
键
词
\color{red} def 关键词
def关键词开头,后接
函
数
标
识
符
名
称
和
圆
括
号
(
)
\color{red}函数标识符名称和圆括号()
函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
def printme(str):
"打印传入的字符串到标准显示屏上"
print(str)
return
printme("123")
# 123
参数传递
python中一切都是对象,参数传递是可变对象和不可变对象
可变对象:list,dict
不可变对象:strings,tuples,numbers
def mut(a):
"传入不可变"
a = 10
return
b=2
mut(b)
print(b)
# 2
def immut(mylist):
"修改传入的列表"
mylist.append([1,2,3,4])
print(mylist)
return
mylist1 = [10,20,30]
immut(mylist1)
print(mylist1)
# [10, 20, 30, [1, 2, 3, 4]]
# [10, 20, 30, [1, 2, 3, 4]]
参数
调用函数时可使用的正式参数类型
必备参数:须以正确的顺序传入函数,调用时的数量必须和声明时的一样。
关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值,使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为python解释器能够用参数名匹配参数值
def op(name,age,sex="male"):
print("name",name)
print("age",age)
print("sex",sex)
return
op(age = 30, name = "wang")
# name wang
# age 30
默认参数:调用参数的值如果没有传入,则被认为是默认值
不定长参数:
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]
def op1(name,*vartuple):
print('name',name)
for var in vartuple:
print(var)
return
op1('wang')
op1('wang','shi','bo')
# name wang
# name wang
# shi
# bo
匿名函数:python 使用lambda来创建匿名函数
lambda只是一个表达式,函数体比del简单的多,拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数
#语法结构
lambda [arg1 [,arg2,.....argn]]:expression
sum = lambda arg1,arg2:arg1+arg2
print(sum(10,20))
# 30
变量作用域
全局变量:定义在函数外的拥有全局作用域,可以在整个程序范围内访问
局部变量:只能在其被声明的函数内部访问