欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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')
Python基础学习:关键字def

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

3.方法的参数传递方法

(1)相对位置参数传递

如2中所示,将要传递的参数值与对应的形参位置匹配

def test(a,b):          #参数a,b为形参
	print(a +'  '+ b)

test('1','2')           #输入进去的字符1与字符2为实参,实参可以是字符、数字、变量、字典、数组、元组等函数支持的数据
Python基础学习:关键字def

(2)绝对位置(或关键字)参数传递

def test(a,b):
	print(a +'  '+ b)

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

Python基础学习:关键字def

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

(3)参数默认值

def add(a,b,c=3):
	print(str(a+b+c))

add(1,2,3)

Python基础学习:关键字def

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

但是,如果这样去设置默认参数,编译器就会报错:

def add(a=1,b,c=3):
	print(str(a+b+c))

add(1,2,3)

Python基础学习:关键字def

因此,默认参数应该被放置于所有参数的后列

(4)包裹(可增长参数)传递

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

①传递数组

def func(*num):
	for i in num:
		print (str(i))
 

func(1,4,6)
Python基础学习:关键字def

也可以这样传递:

def func(*num):
	for i in num:
		print (str(i))
 
a =[1,4,6]
func(a)

Python基础学习:关键字def

也可以通过解析:

def func(*num):
	for i in num:
		print (str(i))
 
a = (1,4,6)
func(*a)
Python基础学习:关键字def

②传递字典

def make_car(**parameters):

	for k,v in parameters.items():
		print(k + ' : '+ v)
	
make_car(       color = 'yellow',
				choose_form = 'GPS'
				)
Python基础学习:关键字def

而下列代码的操作会导致索引错误:

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基础学习:关键字def将错误代码修改一下,就又可以运行了:

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基础学习:关键字def

在参数调用处给传入字典添加**代表着解析字典,这样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基础学习:关键字def

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

相关标签: python def