python中的函数

函数

函数的定义和使用

定义:

def hello():
	print('你好')
#调用函数
hello()

其中hello为函数名,可以在主程序中直接调用.
需要注意: 函数必须是先定义再使用

返回值 return

return是可选的,若没有,则函数返回空.
函数中一旦运行到return,则函数运行结束
定义一个求平方值的函数

#定义函数
def pfh(x,y):
	print(f'{x}和{y}的平方和为{x**2 + y**2}')
	return x**2 + y**2
#调用
a = pfh(3,4)
#a的值为25

函数的参数

固定的参数

1.参数没有默认值

def mysum(x,y):
	return int(x) + int(y)

传入的变量与定义的参数必须是一一对应,否则会报错.
2.参数存在默认值

def mysum_1(x = 0,y = 0):
	return int(x) + int(y)

在运行这个函数时,不带参数不会报错.

带不定个数的参数 *args
def ex(*args):
	print(args)
ex(1)
ex(1,2)
ex(1,2,3)

结果为(1,)(1,2)(1,2,3)
传入的值在函数中以元组存放
依据此特性,可以传入不定个数的参数.

def musum_2(args*):
	return sum([int(i) for i in args])
组合式写法
def mysum_3(x,*args):
	return x + sum([int(i) for i in args])

这表示该函数至少传入一个参数,固定的参数必须写在前面

关键字参数 **kw

关键字参数的写法类似于 a = 1,b =2

def ex_1(x,*args,**kw):
	print(x,args,kw)

ex_1(1,2,a = 1)
ex_1(1,2,3,4,a = 1,b = 2)

运行结束可得
1,(2,),{‘a’ : 1}
1,(2,3,4),{‘a’ : 1,‘b’ : 2}

命名关键字

*之后的为可选参数,不能传入* 后没有的参数,如示例中,若再传入xx=1,则程序报错.

def ex_2(x,*,id,yw = 60,sx = 60):
	print(x,id,yw,sx)
ex_2 (1,id = '12001')
ex_2 (1,id = '12001',yw = 66)
ex_2 (1,id = '12001',yw = 66,sx = 77)
>>>
1 12001 60 60
1 12001 66 60
1 12001 66 77

变量作业范围

不变量:数值,字符串,元组

def change(x,y,z):
	x = 777
	y = 'asdf'
	z = (4,5)
	print('函数内:',x,y,z)
a = 666
b = 'abc'
c = (1,2)
change(a,b,c)
print('函数外:',a,b,c)

运行结果为:

函数内: 777 asdf (4, 5)
函数外: 666 abc (1, 2)

结论: 在不做全局变量时,数值,字符串,元组的值不能被函数改变.

变量:列表,字典,集合

a = [1,2]
b = {'12001':[66,77]}
c = {2,4,6}

def change2(x,y,z):
	x.append(3)
	y['12001'] = [88,99]
	z.add(8)
	print('函数内:',x,y,z)
change2(a,b,c)
print('函数外:',a,b,c)

函数内: [1, 2, 3] {‘12001’: [88, 99]} {8, 2, 4, 6}
函数外: [1, 2, 3] {‘12001’: [88, 99]} {8, 2, 4, 6}

故可得,在函数内改变列表,字典,集合,可直接作用于函数外.

全局变量和局部变量

先写一个小例子:

ga = 1
gb = 'a'
gc =[1,2,3]
def test1():
	print(ga,gb) 
	gc.append(4)
	print(gc)
test1()
print(gc)
def test2():
	ga = 2
	gb = 'b'
	print(ga,gb)
	gc =(1,2)
	print(gc)
test()
print(ga,gb)
print(gc)

1 a
[1, 2, 3, 4]
[1, 2, 3, 4]
2 b
(1, 2)
1 a
[1, 2, 3, 4]

凡是在函数外定义的变量都是全局变量,可以直接在函数内调用.

凡是在函数内定义的变量叫局部变量,只在函数内有效.

注意 若同时定义了局部变量和全局变量,局部变量优先级高.

函数内修改全局变量需要声明 global

def test3():
	global ga
	ga = 999
test3()
print(ga)

999

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值