1、概述

(1)定义:

def 函数 (参数)
代码1
代码2
.....

(2)调用:

函数名(参数)

P.S:(1)在python 中,函数必须先定义后使用。

       (2)定义函数时代码不执行,调用时执行。

# 演示
def add_func(a, b):
    return a+b
a = 1
b = 2
print(add_func(a, b))  # 3

2、说明文档

def add_func(a, b):
    """
    函数说明
    :param a:参数1
    :param b:参数2
    :return:返回值
    """
    return a+b
help(add_func)

(1)书写:函数名下一行,三引号内

(2)查看:help()函数

 

3、全局遍量和局部变量

(1)局部变量:只在函数体内部的变量,函数结束即销毁

(2)全局变量:函数体内外可用的变量

a = 100  # 全局变量
print(a)  # 输出全局变量a,100

def function1():
    print(a)  # 输出全局变量a,100
def function2():
    a = 200  # 局部变量,全局变量不变
    print(a)  # 输出局部变量a,200
def function3():
    global a # 声明全局表量
    a =200  # 修改全局变量
    print(a)  # 输出全局变量a,200

function1()
function2()
print(a)  # 输出全局变量a,100
function3()
print(a)  # 输出全局变量a,200

4、多个返回值

def return_num():
    return 1, 2   # 逗号隔开,默认返回元组返回
    # 另:return 后面可以直接书写元组,字典,列表

print(return_num())  # (1, 2)

5、函数的参数

位置参数

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

def user(name,age,gender):
    print(f'您得名字{name},年龄{age},性别{gender}')
user('tom',20,'')

关键字参数

函数调用通过‘键=值’来加以制定,不分先后顺序

user('Tom',gender='',age=16)

P.s:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

缺省参数

 用于定义函数,为参数提供默认值,调用函数时可不传该默认参数得值

def user(name,age,gender=''):
print(f'您得名字{name},年龄{age},性别{gender}')
user('小米',20)     #gender不传参,默认为男
user('小米',66,gender='')   #gender传参,修改默认值,改为女

(P.s: 所有缺省参数必须出现在默认参数前)

不定长参数

定义函数时不确定传参个数使用

  • 位置传递:*args变量收集参数,根据传进参数的位置合并为一个元组

 

def user(*args):
    print(args)

user('小米',20)
user('小米')
  • 关键字传递:**kwargs变量收集参数,合并成字典
def user(**kwargs):
    print(kwargs)

user(name='小米',age=20, id=110)
user(name='小米',age=66,gender='')

6、拆包

(1)元组:

def return_num():
    return 100,200
#元组拆包
num1,num2=return_num()
print(num1)  # 100
print(num2)  #  200

(2)字典

dict1 = {'name':'Tom','age':18}
#字典拆包
a,b=dict1
#取键
print(a)  # name
print(b)  # age
#取值
print(dict1[a]) # Tom
print(dict1[b])  # 18 

7、交换变量

a,b=1,2
a,b=b,a
print(a)
print(b)

8、引用

python中值的传递通过引用实现。

a=1
b=a # b引用a的值
print(id(a))  # 140732320368288
print(id(b))  # 140732320368288
# b地址和a相同
a=2
print(b)  # 1 b值不变
print(id(a))  # 140732320368320
print(id(b))  # 140732320368288  b地址不变
# int 为不可变类型

aa=[10,20,30]
bb=aa  #bb引用aa的值
print(id(aa))  # 2077392577152
print(id(bb))  # 2077392577152
# bb地址和aa相同
aa.append(30)
print(bb)  # [10, 20, 30, 30]  bb值跟随aa改变
print(id(aa))  # 2077392577152 
print(id(bb))  # 2077392577152 bb地址跟随aa改变
# 列表为不可变类型

9、可变类型和不可变类型

 

可变类型
  • 列表

  • 字典

  • 集合

不可变类型
  • 整形

  • 浮点型

  • 字符串

  • 元组



posted on 2020-03-20 10:33  孤岛蓝鲸  阅读(299)  评论(0编辑  收藏  举报