Python基础学习:关键字def
程序员文章站
2022-06-25 18:44:24
...
关键字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中数据的存储问题。这将在数据现象中讲解