函数定义
python函数的定义:
函数是组织好的,可以重复使用的,能够实现特定功能的代码段。
Python函数的语法
def 函数名(参数列表):
函数体
函数语法规则:
1、使用def关键字开头,后接函数名称和小括号();
2、括号之间用于定义参数;
3、函数体要进行缩进;
4、如果函数有返回值则使用 return 将结果返回,没有返回值则不需要。
定义一个函数输出“Hello world!”
def sayHello():
print("Hello world!")
sayHello() #调用函数
Hello world!
带参数函数¶
def sayHelloTo(name):
print("Hello,",name)
sayHelloTo("Xiaoming")
Hello,Xiaoming
带默认参数函数
def printUserInfo(age=35,name): # 默认参数不在最后,会报错
#"打印任何传入的字符串"
print("名字: ", name)
print("年龄: ", age)
return
报错:
File "<ipython-input-4-d62ef4ba3b9c>", line 1
def printUserInfo(age=35,name):
SyntaxError: non-default argument follows default argument
def printUserInfo(name,age=10): # 默认参数在最后,不报错
# "打印任何传入的字符串"
print("名字: ", name)
print("年龄: ", age)
return
printUserInfo("xiaozhang")
名字:xiaozhang
年龄:10
关键字参数
printUserInfo(age=20,name="xiaozhang")#关键字参数:关键字参数是将参数值用等号赋给参数名,位置是可以不安顺序书写
名字:xiaozhang
年龄:10
对于变量传入函数,在函数内部修改变量值,函数外部的变量值是否变化
a = 10
def userInfo(age):
a = 15
userInfo(a)
print(a)
10
a的值并没有改变实例中有 int 对象 10,指向它的变量是 a,在传递给 userInfo 函数时,按传值的方式复制了变量 a,age 和 a 都指向了同一个 Int 对象,在 age=15 时,则新生成一个 int 值对象 15,并让 age 指向它。
list = [];
def addObject(param):
param.append("a")
addObject(list)
print(list)
['a']
list的值改变了。可变对象在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了
不建议对可变类型在函数内进行更改,建议用函数返回值进行重新赋值:
def test(varible):
temp = varible.copy()
temp.append(100)
return temp
var = []
var = test(var)
var
结果输出:[100]
参数的收集
def test(name,age,*args,**kwargs):
print(name,age,*args,**kwargs)
test("wang",18)
#输出: "wang",18
test("wang",18,20,"lol",[23,24])
#输出:"wang",18,20,"lol",[23,24]
dict_var = {
'h' : 120,
'w' : 130
}
test("wang",18,dict_var)
#输出:"wang",18,{'h' : 120,'w' : 130}
装饰器
a = 10
b = [12,21]
def test():
print("test")
c = test #把函数赋值给一个变量
c.__name__
#输出: 'test'
def test(func):
return func #函数可以当函数的返回值返回
def func():
print("function")
f = test(func)
f.__name__
#输出: 'func'
f()
#输出: function
函数调用
语法:
函数名(参数)
list = [];
def addObject(param):
param.append("a")
return param
addObject(list) #函数调用语句
网友评论