python学习之函数

函数

什么是函数:就是一堆准备好分代码,在需要时调用这一堆代码

函数的声明,使用关键字def来声明

函数的执行逻辑,要和函数的名字一致

在python中用

# def 函数名()
    函数要进行的操作

函数定义好之后需要调用才会运行

1.函数的参数

可以按照位置一一对应传入参数,也可以按照变量名传入(此时可以无序)

2.函数的返回值,函数的文档说明

返回值就是函数执行的结果,并不是所有函数都必须要有返回值

return表示一个函数的执行结果

def add(a:int, b:int):
    """
    这是一个注释
    :param a: 
    :param b: 
    :return: 
    a和b冒号后为建议传入参数类型
    """
    c = a + b

#  c只有在函数内部使用,没有返回值则result无法获取函数结果
result = add(1, 2)
print(result ** 4)

函数调用

3.全局变量和局部变量

全局变量在整个py文件中都可以访问

局部变量只能在函数内部访问,在函数内部定义

如果局部变量和全局变量同名,则是在函数内部定义一个新的局部变量,不是修改去全局变量

如果想要在函数内部修改全局变量,使用global方法

内置函数globals可以查看全局变量, locals可以查看局部变量

在python中,只有函数能够分割作用域

4.多个返回值

一般情况下,一个函数最多只会执行一个return语句

特殊情况(finally语句)下,一个函数可能会执行多个return语句

def test(a, b):
    x = a // b
    y = a % b
    return x, y  #返回的本质是元组,用[]包裹则为列表,{}是时字典

#可以用列表,元组,字典将返回值作为整体返回

print(test(2, 3))

5.函数的缺省函数

默认参数(若没有传递参数,会使用默认值,如果有参数传入,则使用传入的参数)

如:print(”hello world“,end=‘’)

若end未传入则使用默认的换行

如果有位置参数和关键字参数,则位置参数要放在关键字参数之前

6.可变参数的使用

可使用元组或列表打宝传入

*args表示可变位置参数(可变参数会以元组的方式保存到args里,缺省参数需要放在位置参数后)

**kwargs表示关键字可变参数(多出的关键字参数会以字典的形式保存)

7.可变类型和不可变类型传参

def test(a):
    print('修改前a的内存地址0x%X'%id(a))
    a=100
    print('修改后a的内存地址0x%X'%id(a))

def demo(nums):
    print('修改前nums的内存地址0x%X'%id(nums))
    nums[0]=10
    print('修改前nums的内存地址0x%X'%id(nums))
x=1
print('修改前x的内存地址0x%X' % id(x))
test(x)
print('修改后x的内存地址0x%X' % id(x))
print(x)

y=[3,5,9,4,6,7,0]
print('修改前y的内存地址0x%X' % id(y))
demo(y)
print('修改前y的内存地址0x%X' % id(y))
print(y)
# 修改前x的内存地址0x7FF9BE827110
# 修改前a的内存地址0x7FF9BE827110
# 修改后a的内存地址0x7FF9BE827D70
# 修改后x的内存地址0x7FF9BE827110
# 1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值