python函数

函数

  • 函数参数:必备参数(a),默认参数(b=1)、不定长参数(*args, **kwargs)

  • 必备参数:必传, 默认参数:可传可不传,传则覆盖

  • *args:元组, **kwargs:字典

  • func(a, *args, **kwargs) --> func(1,2,3,b=1,c=2), 2和3属于args, b=1,c=2属于kwargs

  • 函数传入的参数为不可变的对外部的变量就没影响(按值传,传的是内容)

  • 函数传入的参数为可变的对外部的变量就有影响(按引用传,传的是地址)

  • return 只能在函数中使用,且当return之后这个函数就结束了,如果没有return时,函数默认返回None

  • 当要返回多个结果给调用者时,方法为:return 结果1,结果2,...用逗号隔开,返回的是一个元组
>>>a=1
>>> def func(a):
...     a+=1
...     return a
...
>>> func(a)
2
>>> a
1

#----------------------------------------------------------------------------------------------------
>>> d = {}
>>> def func2(d):
...     d[1] = 'a'
...     return d
...
>>> func2(d)
{1: 'a'}
>>> d
{1: 'a'}

#global
>>> a
1
>>> def func(a):
...     global a  # 注意当有全局变量的情况下,a是不用传的,直接用就行
...     return a+1
...
  File "<stdin>", line 2
SyntaxError: name 'a' is parameter and global
    
>>> def func():
...     global a
...     print(a)
...
>>> func()
1
# *args 元组,当传入的必备参数多了,那么多余的参数就会被args接收
# **kwargs 字典,当传入的默认参数多了时,那么多余的参数会被kwargs接收
>>> def func(a, *args, **kwargs):
...     print(a, args, kwargs)
...
>>> func(1,2,3,c=3,d=4)
1 (2, 3) {'c': 3, 'd': 4}

#----------------------------------------------------------------------------------------------------
# 判断下面这个字符串里面有多少个数字、字母
a = "I am a 19 years old boy!666!"
def func(a):
    num = 0
    str = 0
    rest = 0
    for i in a:
        if i.isdigit():
            num+=1
            print('这是数字')
        elif i.isalpha():
            str +=1
            print('这是字母')
        else:
            rest += 1
            print('这是其他字符')
    return "数字 {}, 字母{}, 其他{}, 数字字母{}".format(num, str, rest, num+str)
print(func(a))
    

 

匿名函数

# lambda
lambda x:x+1

# 等价于下面这个
def func(x)
    x = x+1
    return x

 

递归函数和闭包函数

#递归----阶乘
def func(n):
    if n ==1:
        return 1
    return func(n-1)*n # 返回本身达到循环的效果,注意位置不能func(n-1)和n的位置不能换

print(func(5))

# 闭包---装饰器
def func1(a):
    def func2():
        print('xxxx')
        return a()        
    return func2

 

上一篇:【Requests库】{4} ——Requests库主要方法解析


下一篇:面试题--Python基础