django项目--电商网站|八、函数

函数介绍

  • 函数:??对某块具有独立功能的代码的封装,提高代码的重用性。
  • 函数的定义和调用
  • 定义:def 函数名()
  • 调用: 函数名()
(1)每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了。
(2)如果函数中执行到了return也会结束函数
(3)遵循代码由上往下执行 会把上面的进行覆盖
  • 函数的文档说明:help(函数名)-----能查看函数的相关说明
1、 函数参数
  • 缺省参数:
    (1)含义:在形参中默认有值的参数,称之为缺省参数。调用函数时,缺省参数的值如果没有传入,则取默认值。
    (2)带有默认值的参数一定要位于参数列表的最后面
  • 不定长参数
    (1)定义:有时可能需要一个函数能处理比当初声明时更多的参数, 这些参数叫做不定长参数,声明时不会命名
    (2)如果很多个值都是不定长参数,那么这种情况下**,可以将缺省参数放到 args的后面*, 但如果有kwargs的话,kwargs必须是最后的
    (3)def functionname([formal_args,] *args, **kwargs):
  • def 函数名(*args): (备注 args名字可以自定义)
  • 加了星号(*)的变量args会存放所有未命名的变量参数
    • 不定长参数元组是缺省参数,默认值为空元组
    • 不定长参数元组需要使用位置参数调用
  • 而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.
    • 不定长参数字典是缺省参数默认值为空字典
  • 调用函数的参数方式
要么按照位置传参(实参和形参的个数相同, 位置要一一对应),要么以关键字传参(不关心其位置 只要把形参名写对即可)。
  • 小总结
    (1)调用时小括号中的参数,用来传递给函数用的,称为 “实参”
    (2)定义时小括号中的参数,用来接收参数用的,称为 “形参”
2、函数返回值 ??返回值:所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果
一个函数中可以有多个return语句,但是只要有一个return语句被执行到,那么这个 函数就会结束了。
  • return的作用
    (1)标识着一个函数有返回值 (return 返回值)
    (2)提前结束函数的调用 (return)
  • 一次返回多个数据
    (1)return后面可以是元组,列表、字典等,只要是能够存储多个数据的类型,就可以一次性返回多个数据
    (2)如果return后面有多个数据,那么默认是元组
def function(): # return [1, 2, 3] # return (1, 2, 3) return {"num1": 1, "num2": 2, "num3": 3}

In [1]: a = 1, 2 In [2]: a Out[2]: (1, 2) In [3]: In [3]: b = (1, 2) In [4]: b Out[4]: (1, 2) In [5]:

3、函数类型
  • 无参数,无返回值的函数
使用情况:一般情况下,打印提示灯类似的功能
  • 无参数,有返回值的函数
一般情况下,像采集数据
  • 有参数,无返回值的函数
对某些变量设置数据而不需结果时
  • 有参数,有返回值的函数
一般情况下,像数据处理并需要结果的应用
4、函数的嵌套调用
def testB(): print('---- testB start----') print('这里是testB函数执行的代码...(省略)...') print('---- testB end----')def testA(): print('---- testA start----') # 调用 B函数 testB() print('---- testA end----')testA()

5、局部变量
  • 定义:在函数内部定义的变量
  • 作用范围:这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的
  • 作用:为了临时保存数据需要在函数中定义变量来进行存储
  • 存在时间:当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了
不同的函数可以定义相同名字的局部变量
6、全局变量
  • 定义:在函数外边定义的变量叫做全局变量
  • global 变量名:告知python这不是定义一个与全局变量名相同的局部变量 而是要修改全局变量的值
  • 作用范围:全局变量能够在所有的函数中进行访问
可以使用一次global对多个全局变量进行声明,global var_name,不能在声明的时候赋值
global a, b

7、拆包、交换变量的值
  • 对返回的数据直接拆包
    拆包时要注意,需要拆的数据的个数要与变量的个数相同,否则程序会异常
  • 除了对元组拆包之外,还可以对列表、字典等拆包
  • python的写法
    (1)name, age, no = “小明”, 20, “001”
    (2)0 <= a <= 10
  • 交换2个变量的值
# 第1种方式 # a = 4 # b = 5 # c = 0 # # c = a # a = b # b = c # # print(a) # print(b)# 第2种方式 # a = 4 # b = 5 # a = a+b# a=9, b=5 # b = a-b# a=9, b=4 # a = a-b# a=5, b=4 # print(a) # print(b)# 第3种方式 a, b = 4, 5 a, b = b, aprint(a) print(b)

8、引用
【django项目--电商网站|八、函数】python中变量保存的不是数值 而是引用
  • 我们可以用id()来判断两个变量是否为同一个值的引用
  • 引用当作实参
    (1)python中函数参数是引用传递(注意不是值传递)
    (2)对于不可变类型,因变量不能修改,所以运算不会影响到变量自身
    b = b + b 和 b += b 都是属于重新赋值
    (3)而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量
    b = b + b (重新赋值)–引用改变
    b += b (b.extend(b)) (对原来的数据进行修改)–引用不改变
  • 对于不可变类型的
9、可变、不可变类型
  • 定义:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变
  • 可变类型有:列表、字典、集合
  • 不可变类型有:数字、字符串、元组

    推荐阅读