八、函数

函数介绍
  • 函数:  对某块具有独立功能的代码的封装,提高代码的重用性。
  • 函数的定义和调用
  • 定义: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, a

print(a)
print(b)
8、引用

python中变量保存的不是数值 而是引用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值