阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Python函数

203次阅读
没有评论

共计 2850 个字符,预计需要花费 8 分钟才能阅读完成。

一、函数基础

1、函数概述

  • 认识函数

    概念:在一个完整的项目中,某些功能会被反复使用。那么会将某段代码封装成函数,当我们要使用功能的时候直接调用函数即可

    本质:函数是对功能的封装

    优点:

    ​ 简化代码结构,增加代码的复用度 (重复使用的程度)

    ​ 如果想修改或调试某一功能时,只需修改对应的函数即可

  • 定义函数

    格式:

    def  函数名 (参数列表):
    	语句
    	return 表达式
    

    说明:

    部位 解释说明
    def 函数代码块以 def 关键词开头
    函数名 遵循标识符的规则
    () 参数列表的开始和结束
    参数列表 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。函数从函数的调用者获得的信息,可以没有参数
    : 函数内容以冒号起始,并且缩进
    语句 函数封装的功能
    return 一般用于结束函数,并返回给函数的调用者一些信息,” 表达式 ” 即为要返回的数据。不带表达式的 return 相当于返回 None
  • 调用函数

    格式:函数名 (参数列表)

    注意:调用函数必须在定义之后

    本质:实参给形参赋值的过程

    说明:

    部位 解释说明
    函数名 要使用某个功能函数的名字
    () 参数列表的开始和结束
    参数列表 调用者给函数的信息 (实参)

2、最简单的函数(无参无返回值)

# func() #报错,函数未定义 # 编写函数,实现打印 zutuanxue_com is a good man 的功能 def func(): print("zutuanxue_com is a very good man") # 调用 func() func() func()

3、函数的参数

编写函数,给函数一个人的姓名、年龄等信息,打印 %s is a good man!He is %d years old!

# 形式参数 (形参):变量 # 参数的数量理论上是无限的,但是实际上最好不要超过 6、7 个,类型是没有限制 def func(name, age, hobbys): print("%s is a good man!He is %d years old!He like"%(name, age), hobbys) # 在函数调用时,需要给函数按顺序传递数据,数据要对应 # 实际参数 (实参):值 func("zutuanxue_com", 18, ["power", "money"])

4、函数的返回值

编写函数,实现计算两个数的和

def mySum(x, y): sum = x + y # 注意:在定义的函数体中,尽量不要出现 print 和 input # print("sum = %d"%sum) return sum # 返回值返回到了函数调用的地方 # ret 接收了 mySum 函数运算后的返回值 ret = mySum(1, 2) print("ret = %d"%(ret)) # 以后会根据函数的返回值进行判断

二、函数参数

1、传递参数

  • 值传递:传递不可变数据类型

    def func1(num): print("num1----",id(num)) num = 402 print("num2----", id(num)) print("1------------", num) a = 401 print("a----", id(a)) func1(a) print("2------------", a)
  • 引用传递:传递可变数据类型

    本质还是值传递,传递的是地址

    def func2(arr): print("arr1------",id(arr)) print("---------", arr) arr.pop() li = [1,2,3,4,5] func2(li) print("li-------", id(li)) print(li)

2、关键字参数

目前为止对参数的要求:调用时参数的顺序要与定义时一致

关键字参数:允许函数调用时参数的顺序与定义时不一致

def func(name, age): print("%s is a good man!He is %d years old!He like"%(name, age)) # 使用关键字参数 func(age=18, name="zutuanxue_com")

3、默认参数

在调用函数时,如果没有传递参数,就使用默认参数的值

注意:在定义函数时尽量将默认参数写在最后

def func(name, age=18): print("%s is a good man!He is %d years old!He like"%(name, age)) func("zutuanxue_com") func("zutuanxue_com", 16)

4、不定长参数

能处理比当初定义时更多的参数

  • 使用列表传递多个参数

    def func1(name, age, hobbys): print("%s is a good man!He is %d years old!He like" % (name, age), hobbys) func1("zutuanxue_com", 18, ["power", "money"])
  • 在形参变量前加了个星号,变量会存放所有未命名的变量的参数,如果在函数调用时没有指定参数,它就是个空元组

    # 不定长参数默认放在参数后面 def func2(name, age, *args): print("%s is a good man!He is %d years old!He like" % (name, age)) print(args, type(args)) func2("kaige", 18, "power", "money", "girl", "boy")
  • kwargs

    代表着键值对字典,和 * 差不多

    def func3(name, age, **kwargs): print("%s is a good man!He is %d years old!He like" % (name, age)) print(kwargs, type(kwargs)) func3("kaige", 18, x=1, y=2, z=3)
  • 配合使用

    def func(*args, **kwargs): print(args) print(kwargs) func(1,2,3,4,x=5,y=6,z=7)

三、函数返回返回值

1、函数返回多个返回值

可以一次性返回多个值,多个值用逗号分隔

# 游戏中的人物坐标 def func(): return 1, 2 x, y = func() print(x, y) print(type(x))

2、函数也是一种数据

函数也是一种数据,那么就可以用变量来保存 (函数名也是一个特殊的变量)

应用:将函数作为参数传递(回调函数)

def func(x, y): return x + y f = func print(f(1,2))

四、匿名函数

不在使用 def 语句这样标准的形式定义函数,而是使用 lambda 来创建匿名函数

格式:lambda [arg1[, arg2[, args,……]]]: exception

作用:作为参数传递,实现回调,简化代码

特点:

  1. lambda 只是一个表达式,函数体比 def 简单的多
  2. lamdba 主体是一个的表达,而不是代码块,仅能在 lamdba 表达式中封装有限的逻辑
  3. lamdba 函数拥有自己的命名空间,且不能访问自有参数列表之外的或全局命名空间里的参数
  4. 虽然 lamdba 函数体看起来只有一行,却不同于 C 和 C ++ 的内联函数,后者的目的是调用小函数时不占用栈内存而增加效率
f = lambda x, y: x + y print(f(2,3))

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-05-26发表,共计2850字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中