python---函数(1)

本文详细介绍了Python函数的使用,包括函数的参数类型(位置参数、关键字参数、默认参数、不定长参数)、返回值的作用、函数的嵌套调用以及变量作用域(局部变量与全局变量)。此外,还讲解了拆包的概念,如元组拆包和交换变量的值,并对比了可变类型与不可变类型的特性。文章通过实例演示了各种函数用法,适合Python初学者学习。
摘要由CSDN通过智能技术生成

函数

  • 定义函数
def 函数名():
	代码1
	代码2
  • 调用函数
函数名() 

一.函数的参数

  • 形参: 函数定义时书写的参数(非真实数据)
  • 实参: 函数调用时书写的参数(真实数据)
def add_num1(a,b):#定义函数时同时定义了接收用户数据的参数a和b,a和b是形参
    result = a+b
    print(result)
add_num1(3,4)   # 调用函数时传入了真实的数据3和4,真实数据为实参

参数类型

1.位置参数:调用函数时根据函数定义的参数位置来传递参数

def a(name,age,gender):
    print(f'名字是{name},年龄是{age},性别是{gender}')
a('tom',20,'女')    

==注:==传递和定义参数的顺序及个数必须一致
2.关键字参数:函数调用,通过键=值的形式指定
==注:==函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数自检不存在先后顺序
3.缺省参数(默认参数):用于定义参数,为参数提供默认值,调用函数时不传该默认参数的值,(所有的位置参数必须出现在默认参数之前,包括函数的定义和调用

def a(name,age,gender='男'):   # gender='男'就是默认参数
    print(f'名字是{name},年龄是{age},性别是{gender}')
a('tom',20)   #返回名字是tom,年龄是20,性别是男
a('小明',20,'女')   # 返回名字是小明,年龄是20,性别是女  给了参数,修改默认值

函数调用时,如果为缺省参数传值则默认参数值,否则使用这个默认值
4.不定长参数:也叫可变参数,由于不确定调用的时候会传递多少参数的场景,可用包裹位置参数,或者包裹关键字参数,来进行参数的传递
(1)包裹位置传递 *args

#接收所有的位置参数,返回一个元组
def a(*args):   #*args是形参
    print(args)
a('tom',21)   # 返回元组('tom', 21)
传进的所有参数都会被args标量手机,会会根据传进参数的位置合并成一个元组,arg是元组类型

(2)包裹关键字传递 ** kwargs

def a(**kwargs):   #**kwargs是形参
    print(kwargs)
a(name='tom',age=21)   # 返回字典  {'name': 'tom', 'age': 21}   

二.函数的返回值作用

1.写法:return 表达式
2.return作用:
负责函数返回值
退出当前函数,导致return下方的所有代码(函数体内部)不执行
3.当多个返回值时,
(1)return a,b写法,返回对个数据的时候,默认是元组类型
(2)return后面也可以连接列表,元组,字典,以返回多个值

三.函数的嵌套

函数嵌套:一个函数里面调用另外一个函数
例1:

# 打印图形
def print_line1():
    print('-' * 20)

def print_line2(num):
    i=0
    while i< num:
        print_line1()
        i+=1
print_line2(5)

在这里插入图片描述
在这里插入图片描述
例2:

#2.求任意3个数的和
def sum_num(a,b,c):
    return a+b+c

def averge_result(a,b,c):
    sumaverage = sum_num(a,b,c)
    return sumaverage /3
averageresult = averge_result(1,2,3)  # 首先调用averge_result函数,然后调用sum_num函数
print(averageresult)

输入
输出

四.变量作用域

  • 局部变量
    定义在函数体内部的变量,只在函数体内部生效
    局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量
    在这里插入图片描述
  • 全局变量
    在函数体内、外都能生效的变量
    在这里插入图片描述
    1.如果函数里面直接把a=200赋值,此时的a不是全局变量的修改,而是相当用户子函数内部声明了一个新的局部变量
    2.函数体内部修改全局变量,先global声明a为全局变量,然后在变量重新赋值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

五.拆包

组包:把零散数据组合成一个整体
拆包:跟组包相反

1.拆包元组

def return_num():
    return 100,200
#result = return_num()
#print(result)    #返回的是元组(100,200)
num1,num2= return_num()
print(num1)
print(num2)    # 返回的是100 回车200,就拆包成功

在这里插入图片描述

2.交换变量的值

a,b = 1,2
a,b=b,a
print(a)   # 返回2
print(b)    # 返回1

六.了解引用值可变类型

可变类型和不可变类型的区别:数据能够直接修改,可以修改是可变,不能修改是不可变类型

  • 不可变类型
    整型
    浮点型
    字符串
    元组

  • 可变类型
    列表
    字典
    集合

a= [10,20]
b=a
print(b)   # 返回[10,20]   赋值
a.append(30)
print(a)   # 返回[10, 20, 30]
print(b)    # 返回[10, 20, 30] 因为列表是可变类型  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值