python语言def_Python基础学习:关键字def-Go语言中文社区

关键字def是用来定义方法(即函数)

1.应用格式

def 函数名(参数1,参数2,…)#参数1,参数2等为形参

执行语句def test(a,b):

pass #占位,可以用方法实现的具体操作代替

2.方法的调用def test(a,b):

print(a +' '+ b)

test('1','2')

方法调用时一定要向方法传递符合要求的参数(属性),方法才能被正确执行。

3.方法的参数传递方法

(1)相对位置参数传递

如2中所示,将要传递的参数值与对应的形参位置匹配def test(a,b): #参数a,b为形参

print(a +' '+ b)

test('1','2') #输入进去的字符1与字符2为实参,实参可以是字符、数字、变量、字典、数组、元组等函数支持的数据

(2)绝对位置(或关键字)参数传递def test(a,b):

print(a +' '+ b)

test(b = '1',a = '2')

与上文程序相比,参数的传递就与相对位置无关,而与传递对象有关

(3)参数默认值def add(a,b,c=3):

print(str(a+b+c))

add(1,2,3)

这样,默认参数就可以被直接使用

但是,如果这样去设置默认参数,编译器就会报错:def add(a=1,b,c=3):

print(str(a+b+c))

add(1,2,3)

因此,默认参数应该被放置于所有参数的后列(4)包裹(可增长参数)传递

包裹传递可以用来向方法传递不定长度的数组或者字典,以便于随时扩展同类型数据的处理容量。一般来说,在方法体内应当用for循环对其进行分解处理。

①传递数组def func(*num):

for i in num:

print (str(i))

func(1,4,6)

也可以这样传递:def func(*num):

for i in num:

print (str(i))

a =[1,4,6]

func(a)

也可以通过解析:def func(*num):

for i in num:

print (str(i))

a = (1,4,6)

func(*a)

②传递字典def make_car(**parameters):

for k,v in parameters.items():

print(k + ' : '+ v)

make_car( color = 'yellow',

choose_form = 'GPS'

)

而下列代码的操作会导致索引错误:def make_car(**parameters):

for k,v in parameters.items():

print(k + v)

car_1 = {'color' : 'yellow','choose_form' : 'GPS'}

make_car(car_1)

将错误代码修改一下,就又可以运行了:def make_car(**parameters):

for k,v in parameters.items():

print(k + v)

car_1 = {'color' : 'yellow','choose_form' : 'GPS'}

make_car(**car_1)

在参数调用处给传入字典添加**代表着解析字典,这样python解释器就知道该如何操作这个数据了。

4,.方法对传入参数的操作(是否修改传入参数的本体)

Python方法的参数传递时,值得注意的是,传入参数为变量是会被临时赋值给参数变量,如果传入参数是对象则会被引用。临时赋值不改变本体数据,而引用会改变本体数据。当然如果数据被gobal定义为全局数据,那它在任何地方的操作都会改变其所引用的数据。def test(p1,p2):

p1 = 10

p2.append('hello')

a = 20

b = []

test(a,b)

print(a)

for v in b:

print(v)

为什么会出现这种情况,这就涉及到python中数据的存储问题。这将在数据现象中讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值