python3函数
程序员文章站
2022-06-12 22:54:03
...
函数定义
函数是一个可以共用的完成某个特定功能的代码片段,以def开头,名称后面加个(),这就是函数,()中可以有形参。
def myFun():
print("hello my Function!")
myFun()
参数
我们提到的()中的内容,在定义函数时给定的名称称作“形参”(Parameters) ,在调用函数时你所提供给函数的值称作“实参”(Arguments) 。
- 默认参数
存在一种情况,如果函数调用者没有经验对参数输入准确值,那么在函数定义的时候,可以给参数设置默认值。调用者如果不输入这个参数,就使用默认值;如果调用者输入了参数值,就使用调用者输入的值。
def myFun2(x, y=2):
print(x * y)
myFun2("a")
myFun2("a", 3)
输出:
aa
aaa
如果定义函数时,同时存在默认值参数和普通参数,一般将带默认值得参数放在最后。
- 关键字参数
调用函数的时候,如果存在默认参数,并且我们需要跳跃着给参数赋值,那么可以直接按照参数的名字赋值,这种方法简单有效,非常形象。
def myFun3(a, b=5, c=10):
print('a is', a, 'and b is', b, 'and c is', c)
myFun3(2,7)
myFun3(a=2,c=7)
myFun3(a=2,b=3,c=7)
输出:
a is 2 and b is 7 and c is 10
a is 2 and b is 5 and c is 7
a is 2 and b is 3 and c is 7
- 数量可变参数
def myFun4(x, *y, **z):
print("x=", x)
#遍历元祖
for t in y:
print("y=", t)
#遍历字典
for k,v in z.items():
print("zKey=", k, ",zValue,", v)
myFun4(2, 5, 6, 7, tom=12, lilei=13)
输出:
x= 2
y= 5
y= 6
y= 7
zKey= tom ,zValue, 12
zKey= lilei ,zValue, 13
在参数序列中,*可接收元祖形式的参数,**可以接收字典形式的参数。
- 可更改/不可更改参数
在 python 中,string, tuple和 number 是不可更改的对象,而 list,dict 等则是可以修改的对象。不同对象作为实参,传递给函数,结果是不相同的。
对于不可变类型,比如先赋值x=7,然后再赋值x=8,并不是更改了x,而是重新创建了一个变量x。对于可变类型,比如变量赋值 la=[1,2,3,4] 后,再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
#不可变类型传递
def myFun5(x):
x = 7
k = 5
myFun5(k)#传递不可变数据
print("k=", k)
输出:
k= 5#函数处理后,k的值并没有变
#可变类型传递
def myFun6(la):
la.extend([7,8,9])
list1 = [1,2,3]
myFun6(list1)#传入可变类型
print(list1)
输出:
[1, 2, 3, 7, 8, 9]
我们可以看到,传入不可变类型,变量没有变,传入可变类型,变量变了。
局部变量
所有变量定义之后,它的有效范围都是在它所在的代码块。在函数中定义的变量,有效范围是函数体内这个局部,称为局部变量,它与函数体外的同名变量没有任何冲突。
x = 9
def myFun7(x):
x = 8
print("Inner x is:", x)
myFun7(x)
print("Outer x is:", x)
输出:
Inner x is: 8
Outer x is: 9
可见,函数体外已经存在x,但是在函数体内仍旧可以创建x,并且局部变量x的改变并没有影响函数外的x。
global语句
有这样一种情况,在程序的最初定义了一个全局变量,希望这个变量无论是在函数体中,或者其他地方都可以使用,那么函数体内怎么使用这个变量呢?这就用到了global,它指定的变量,代表着这个变量来自于全局变量。
x = 1
def myFun8():
global x
print("Inner before x is:", x)
x = 2
print("Inner after x is:", x)
myFun8()
print("Outer x is:", x)
输出:
Inner before x is: 1
Inner after x is: 2
Outer x is: 2
DocStrings
我们写函数或者类的时候,我们需要写一些说明信息,表征这个对象的内容和特点,python便提供了一个查看这些帮助信息的属性。
def myFun9():
'''I am DocString'''
# 如果可能,将其转换至整数类型
print("calling myFun9!")
myFun9()
print(myFun9.__doc__)
输出:
calling myFun9!
I am DocString
#使用help
help(myFun9)
输出:
Help on function myFun9 in module __main__:
myFun9()
I am DocString
python自带的help功能,就是调用对象的DocStrings
上一篇: SpringMVC 框架入门