Python中函数的用法

1、简单定义

  1. 必须使用关键字 def
  2. 函数体注意缩进
  3. 函数名与()需绑定
  4. 应用:将重复的代码封装到函数,增强代码模块化
  5. print(函数名),输出的结果为函数地址。

2、函数之可变参数

def add(*args): 
	print(args)
add()  #输出结果空元组()
add(1)  #输出结果为(1)
add(1,2) # 输出结果为 (1,2)
add(1,2,4) #输出结果为 (1,2,4)

注: 可变参数可以接受多个参数,并将可变参数打包为元组。

3、关键字参数

  1. 关键字参数固定参数

    def add(a,b=10):
    	result = a+b
    	print(result)
    #调用
    add(5) #输出结果为15
    add(4,7) #输出结果为11
    
    def add1(a,b=10,c=4):
    	result = a+b+c
    	print(result)
    #如果想将6赋值给c,则需要结合关键字的key使用
    add1(2,c=6) #输出结果为18
    
  2. 关键字参数可变参数

    def func(**kwargs):
    	print(kwargs)
    func(a=1,b=2,c=3) #输出结果为{'a':1,'b'=2,'c'=3}
    dict1 = {'01':'python','02':'java','03':'c语言'}
    func(dict) #报错
    func(**dict1) #不报错,输出结果{'01':'python','02':'java','03':'c语言'}
    

注: **kwargs只要把外面给函数送的值,送的值必须是key = value。关键字可变参数是将变量打包为字典。

4、* & **

*、**都表示可变参数的意思,但是前者是传入一个value,后者是传入类似键值对形式。两者都可以表示拆包和装包的过程,那什么时候拆包?什么时候装包呢?
  • 当*、**为函数的参数时,表示装包的过程。所以传入的实参一定是可装包的。
  • 当作为实参传给函数的形参时,需要拆包。
  • *拆包和装包都可打印,**装包是可打印的,**拆包后是不可打印的。
* 装包输出的结果类型是元组、**装包输出的结果类型是字典。
def func1(*args):
    print(args)
list1 = [1,2,6]
print(*list1)
func1(*list1)
#输出结果为:
1 2 6
(1, 2, 6)

def func(**kwargs):
    print(kwargs)
# func(a=1, b=2, c=3)  # 输出结果为{'a':1,'b'=2,'c'=3}
dict1 = {'01': 'python', '02': 'java', '03': 'c语言'}
#print(**dict1)  报错
# func(dict)  # 报错
func(**dict1)  # 不报错
#输出结果为:{'01': 'python', '02': 'java', '03': 'c语言'}

5、返回值

return 后面可以是多个参数,如果多个参数则底层会将多个参数先放在一个元组中(之后拆包),也可以接受的时候多个变量来接受。

6、全局变量和局部变量

需要注意的是:

  • 当全局变量与局部变量同名时,优先使用局部变量。
  • 全局变量需要在函数体内修改时候:
    1. 当全局变量是不可变类型时,则需要在函数体内声明global关键字。
    2. 当全局变量是可变类型时,则不需要在函数体内声明global关键字,正常使用就行。
    3. 对于不可变类型和可变类型可参考:Python中可变与不可变类型

7、补充

判断变量是为某个数据类型的函数:
isintance(变量,变量类型),为系统函数,返回值为boolean类型。

发布了84 篇原创文章 · 获赞 36 · 访问量 4559

猜你喜欢

转载自blog.csdn.net/qq_41475583/article/details/104870473