Python3之函数

一、函数定义

1、规则

a、函数代码块以def关键字开头,后接函数名和圆括号()

b、传入的参数和变量放在圆括号中,圆括号之间可以用来定义参数

c、函数的第一行语句可以选择性地使用注释(“”“”“”)用于函数说明,当调用函数时,可使用Ctrl+Q查看函数说明

d、函数体以冒号开始,并且注意缩进

e、使用return [表达式] 结束函数,选择性地返回一个值给调用方,如果不带表达式的return,则相当于返回 None

2、格式

def 函数名(参数列表):
    函数体

二、函数调用

使用函数名(参数列表)方式调用函数

def print_welcome(name):
    """定义函数"""
    print("Welcome", name)
    return

def area(weight , height):
    """定义一个函数,计算长方形面积"""
    return weight * height

# 函数调用
print_welcome('Kobe')

# 调用函数,使用变量接收函数返回值
areaN = area(2 , 3)
print("长方形的面积为:" , areaN)
Welcome Kobe
长方形的面积为: 6

三、参数传递

a、可更改(mutable)对象与不可更改(immutable)对象

python中,字符串(strings)、元组(tuples)和数字(numbers)是不可更改对象,而列表(list)、字典(dict)和集合(set)是可更改对象

  • 不可变类型:变量赋值 a=1 后再赋值 a=2,实际是新生成一个 int 值对象2,再让 a 指向它,而 1 被丢弃,并不是改变a的值,而是新生成了一个a,变量的内存地址会发生变化;

  • 可变类型:变量赋值 listA = [1,2,3,4]后再赋值listA[2] = 5,是将listA的第三个元素值更改,本身列表listA没有变动,只是其内部的部分元素被修改了,变量的内存地址不会发生变化;

a = 1
print("a = 1 的变量a的内存地址为:" , id(a))

a = 2
print("a = 2 的变量a的内存地址为:" , id(a))

listA = [1 , 2 , 3 , 4 , 5]
print("listA修改前:" , listA)
print("listA列表修改前的内存地址为:" , id(listA))

listA[4] = 6
print("listA修改后:" , listA)
print("listA列表修改后的内存地址为:" , id(listA))
a = 1 的变量a的内存地址为: 140711762161920
a = 2 的变量a的内存地址为: 140711762161952
listA修改前: [1, 2, 3, 4, 5]
listA列表修改前的内存地址为: 2600661373512
listA修改后: [1, 2, 3, 4, 6]
listA列表修改后的内存地址为: 2600661373512

python 函数的参数传递:

  • 不可变类型:类似 c++ 的值传递,如整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身,在 fun(a)函数内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身;

  • 可变类型:类似 c++ 的引用传递,如列表、字典。如fun(listA),则是将listA真正的传过去,修改listA后fun外部的listA也会受影响;

# python 传不可变对象实例
def ChangeInt(a):
    print("参数传递的a的值是:" , a , "a的内存地址为:" , id(a))
    a = 1
    print("重新赋值后的a的值是:" , a , "a的内存地址为:" , id(a))
    return

b = 2
ChangeInt(b) # 调用函数时将b的值传给a,此时a等于2,再执行赋值操作a = 1时,新生成一个对象a,两个a的内存地址不一样
print("b的值是:" , b)
参数传递的a的值是: 2 a的内存地址为: 140711762161952
重新赋值后的a的值是: 1 a的内存地址为: 140711762161920
b的值是: 2
# 传可变对象实例,列表mylist在函数changeme里发生了变化,mylist指向同一个内存地址,因此外面的listA也同步发生改变
def changeme( mylist ):
    """修改传入的列表"""
    mylist.append([1,2,3,4])
    print ("函数内取值: ", mylist)
    return

# 调用changeme函数
mylist = [10,20,30]
changeme( mylist )
print ("函数外取值: ", mylist)
函数内取值:  [10, 20, 30, [1, 2, 3, 4]]
函数外取值:  [10, 20, 30, [1, 2, 3, 4]]

四、函数参数

参考文档:https://www.liaoxuefeng.com/wiki/897692888725344/8976935682014

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值