Python的常用函数代码示例(不能再删了,常用的就这么点了!!!!)

依赖: Anaconda3

'''
函数定义
    方法名称
    参数列表
    返回值
    方法体
'''
def func():
    print("hello")
#函数调用
func()

#带参数的函数
def func2(a,b):
    print(a+b)
func2(1,2)
#定义函数的时候,如果函数的名称一致,会将之前的函数进行覆盖
# def func2(a,b,c):
#     print(a+b+c)
# func2(1,2)

'''带默认值参数的函数,
    1、定义函数的时候,参数可以保留默认值,如果调用的时候传递参数,按照传递的参数实现,如果没有参数,按照默认值实现
    2、定义参数默认值的时候,前面的参数如果有默认值,则后续的参数必须有
    3、如果参数都有默认值,可以只传递部分参数
    4、如果需要跳过前面的部分参数进行赋值,需要写上的名称
'''
def func3(a=10,b=20):
    print(a+b)
func3(b=10)

'''
不定长参数的函数
    1、定义函数的时候,可以不知道参数列表的长度
    2、*args代表单个的值,长度任意,是tuple
    3、**kwargs:表示键值对的参数,是dict
'''

def func4(a,b,*args,**kwargs):
    print("a=",a)
    print("b=",b)
    print("*args=",args)
    print("**kwargs=",kwargs)
func4(1,2,3,4,5,6,7,8,9,10,x=10,y=20)

#带返回值的函数
def func5(a,b):
    return a+b
print(func5(1,2))
#带多个返回值的函数
def func6(a,b):
    return a/b,a%b
t = func6(10,3)
print(t)
print(type(t))

'''
局部变量:定义在函数内的变量
全局变量:定义在函数外的变量,可以被任意函数引用
         全局变量不能在函数中修改值,如果需要修改全局变量的值需要使用global声明
'''
count=10
def func7():
    # count=100
    global count
    print(count)
    count=100
    print(count)
func7()
print(count)

#引用传参
def func8(a):
    a+=a
    return a
# x=10
# x=[1,2]
x=(1,2)
print(func8(x))
print(x)

#递归函数
#斐波那契数列 1,1,2,3,5,8,13,21,34,55
def func9(a):
    if(a<=2):
        return 1
    else:
        return func9(a-1)+func9(a-2)
print(func9(10))

#产生20位的斐波那契数列
for i in range(1,21):
    print(func9(i),end="\t")

#匿名函数
func10=lambda a,b:a+b
print(func10(1,2))
#1、当作函数的参数
def func11(a,b,fun):
    return fun(a,b)
print(func11(1,2,lambda a,b:a+b))
print(func11(1,2,lambda a,b:a-b))
print(func11(1,2,lambda a,b:a*b))
print(func11(1,2,lambda a,b:a/b))
#2、当作函数的内置变量
list = [{"name":"zhangsan","age":10},{"name":"lisi","age":30},{"name":"wangwu","age":5}]
list.sort(key=lambda x:x["age"],reverse=True)
print(list)

总结1:

在函数外边定义的变量叫做全局变量

全局变量能够在所有的函数中进行访问

如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错

如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的,小技巧:强龙不压地头蛇

总结2:

在函数中不使用global声明全局变量时不能修改全局变量的本质是不能修改全局变量的指向,即不能将全局变量指向新的数据。

对于不可变类型的全局变量来说,因其指向的数据不能修改,所以不使用global时无法修改全局变量。

对于可变类型的全局变量来说,因其指向的数据可以修改,所以不使用global时也可修改全局变量。

可变类型:值可以修改(内存地址不变但是所保存的值变化了),引用可以修改(变量的内存地址变化了)

不可变类型:值不可以修改,可以修改变量的引用(=赋值号)。

 

在函数里面修改全局变量:

     1、如果全局变量是可变类型:所以在函数里面任意修改(值,引用)

     2、如果全局变量是不可变类型:在函数里面不能修改值,也不能修改引用,除非加上global才能修改引用。

猜你喜欢

转载自blog.csdn.net/weixin_42312342/article/details/89927412
今日推荐