如何理解Python函数(Function):
1.函数(Function)是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
2.函数能提高应用的模块性,和代码的重复利用率。
那么如何定义一个函数呢? 它定义的基本规则如下:
1.函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
2.任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
3.函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
4.函数内容以冒号起始,并且缩进。
5.return [表达式] 结束函数,选择性地返回一个值给调用方。
6.不带表达式的return相当于返回 None。
例如:
def 函数标识名称( 参数列表 ):
"函数_文档字符串,对函数进行说明"
函数体
return [表达式]
写函数必须调用函数不然没有太大意义,接下来以一个简单的自定义函数清晰的体现出函数的调用
ef addOne(x, y): #自定义一个addOne函数
x += 1
y += 1
return x, y #一次返回多个结果
pass
m, n = addOne(1, 2) #定义多个变量接受返回结果
print(m," ", n)
>>>2 3
参数的传递:
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list, dict 等则是可以修改的对象。
不可变数据的传递
def sayHello(name, toName): #pythonn 是完全面向对象的
name = "dashu"
print("{0} 对 {1} 说你好".format(name, toName))
pass
name1 = "xiaogege"
toName1 = "xiaojiejie"
sayHello(name1, toName1)
print(name1)
>>>dashu 对 xiaojiejie 说你好
看例子的输出结果是dashu对小姐姐说你好而不是xiaogege对小姐姐说你好,可以看出传给不可变数据是无意义的
可变数据的传递
def addUser(userList, userName):
userList.append(userName) #只是修改了列表的元素里的值。
pass
userList1 = ['zhangsan']
addUser(userList1, 'lisi')
print(userList1)
>>>['zhangsan', 'lisi']
我们可以看出把数据传给可变数据是完全ok的
调用函数时可使用的正式参数类型:
必备参数,默认参数,不定长参数
必备参数:
def sum(x, y):
return x+y
pass
print(sum(1, 2))
>>>3
默认参数:(注意带默认值的参数必须放在定义)
def sum(x, y = 0):
return x+y
pass
print(sum(1))
print(sum(1, y = 10)) # 以前调用函数时:参数列表的顺序时固定的,但是python可以匹配参数名
>>>1
>>>11
不定长参数:
*args:加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可,可变长参数的类型为元组
def 函数名称(formal_args, *args ):
"函数_文档字符串"
函数体
return [表达式]
**kw:加了星号(**)的变量名会存放所有未命名的变量参数。选择不多传参数也可,可变长参数的类型为字典。
def 函数名称(formal_args, **kw ):
"函数_文档字符串"
函数体
return [表达式]
这里小编把他俩放在一起举一个最简单的例子
def test(*a, **aa):
print(a, aa)
pass
test(1,2,3,4,5,6, **{'a':1, 'b':2, 'c':3})
>>>(1, 2, 3, 4, 5, 6) {'a': 1, 'b': 2, 'c': 3}
可以看出输出的结果分别为元组和字典(不定长参数*args和**kw 在**后面的字母可以自己随便定义不过国际上习惯写args和kw)