python函数

一.函数的理解和定义

1.定义:
def 函数名():
    函数体

例:

def collatz(number):
    # if number % 2 == 0:
    #     print(number//2)
    # else:
    #     print(3*number+1)
    print(number//2 if number %2 ==0 else 3 * number +1)
collatz(2)
2.空函数:

pass可以用来作占位符

def fun():
    pass
fun()
print('abc')
3.函数里面嵌套函数
def fentiao():
    print('is fentiao....')
    def westos():
        print('westos')
    westos()
fentiao()
4.调用函数
def hello():
    print('hello')
    print('hello')
#调用函数
hello()

二.函数动态添加成员

def fun():
    print(fun.x)
    fun()
1.动态添加
fun.x = 3
fun()
2.动态删除
del fun.x
fun()

三.函数的返回值

函数调用时一般有返回值,没有定义返回值的时候,python中默认返回None

#返回None
def hello():
    print('hello')
res = hello()
print(res)
#返回hello
def hello():
    # return 返回的表达式或者变量
    return 'hello'
res = hello()
print(res)
多个返回值

python 函数中,只能返回一个值,如果非要返回多个值,会把返回的值封装为一个元组数据类型。

def fun(a):
    # 接收一个列表,求这个列表的最大值,平均值,最小值
    max_num = max(a)
    min_num = min(a)
    avg_num = sum(a)/len(a)
    return max_num,min_num,avg_num
variables = fun([34,1,2,3,4,5,6,7,421])
print(variables,type(variables))

四.函数的实参与形参

1.实参:

调用函数时的参数称为实参,该参数必须是实际存在的

2.形参:

定义函数时的变量称为形式参数,变量名可以任意起

分类:
1.位置参数:

形参和实参必须保持一致(按照位置传递函数)
例:

def getInfo(name, age):  
    print(name, age)
getInfo(age=18, name='name')
2.默认参数:

形参和实参可以不一致

def mypow(x,y=2):
    """
    求x的y次方
    :param x:
    :param y:
    :return:
    """
    print(x**y)
mypow(4)
mypow(4,3)
3.可变参数:*args

可变参数就是传入的参数个数是可变的,(可以是0个,1个,2个,任意个)

def mySum(*args):
    """
    需求:用户可以传递任意的值,计算数值的和
    *args:是一个可变参数
    args:是元组数据类型
    :param args:
    :return:
    """
    #print(args)
    sum = 0
    for item in args:
        sum += item
    print(sum)
mySum(1,2,3,4,5,6,7,8)
4.关键字参数:**kwargs

关键字参数允许传入0个或任意个含参数名的参数;这些关键字参数在函数内部自动组装为一个dict。

# 关键字参数
def getStuInfo(name,age,**kwargs):
    print(name,age)
    print(kwargs)

getStuInfo('westos',11,hobbies=['code','running'],gender='female')

在这里插入图片描述

5.参数解包

对 列表,元组,集合解包时,只需要在变量前加*

nums = [1,2,3,4,5,6]
nums1 = (2,5,6,7,9,10)
nums2 ={1,2,3,4,5,6,7,8}
mySum(*nums2)
score = (12,23,56,78,90)
minscore,*middlescore,maxscore = score
print(*middlescore)
print(middlescore)

如果要对字典进行解包,一个星号获取key值,两个星号全部获取

d = dict(a=1,b=2)
print(*d)
getStuInfo('westos',11,**d)

五.函数的作用域

1.全局作用域

作用于整个程序

num = 10
print('out fun: id=',id(num))
2.局部作用域

在函数运行时生效,函数运行时生效,函数运行结束则释放

num=10
def fun():
    #局部作用域,在函数运行时生效,函数运行结束则释放
    num =2
    print('in fun:id=',id(num))
    print('in fun:num = %s' %(num))
fun()
print('out fun: num=%s' %(num))

可以通过global关键字声明局部变量为全局变量

num = 10

def fun():
    # 通过global关键字声明局部变量为全局变量
    # 函数执行完毕,变量依然生效
    global num
    num = 2
fun()

print(num)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值