前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python函数

Python函数

作者头像
星哥玩云
发布2022-09-08 12:04:43
4090
发布2022-09-08 12:04:43
举报
文章被收录于专栏:开源部署

一、函数基础

1、函数概述

认识函数

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

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

优点:

​ 简化代码结构,增加代码的复用度(重复使用的程度) ​ 如果想修改或调试某一功能时,只需修改对应的函数即可

定义函数

格式:

代码语言:javascript
复制
def  函数名(参数列表):
	语句
	return 表达式

说明:

部位

解释说明

def

函数代码块以 def 关键词开头

函数名

遵循标识符的规则

()

参数列表的开始和结束

参数列表

任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。函数从函数的调用者获得的信息,可以没有参数

:

函数内容以冒号起始,并且缩进

语句

函数封装的功能

return

一般用于结束函数,并返回给函数的调用者一些信息,"表达式"即为要返回的数据。不带表达式的return相当于返回 None

调用函数

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

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

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

说明:

部位

解释说明

函数名

要使用某个功能函数的名字

()

参数列表的开始和结束

参数列表

调用者给函数的信息(实参)

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

代码语言:javascript
复制
# 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!

代码语言:javascript
复制
# 形式参数(形参):变量
# 参数的数量理论上是无限的,但是实际上最好不要超过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、函数的返回值

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

代码语言:javascript
复制
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、传递参数

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

代码语言:javascript
复制
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)

引用传递:传递可变数据类型

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

2、关键字参数

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

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

代码语言:javascript
复制
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、默认参数

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

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

代码语言:javascript
复制
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、不定长参数

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

使用列表传递多个参数

代码语言:javascript
复制
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"])

在形参变量前加了个星号,变量会存放所有未命名的变量的参数,如果在函数调用时没有指定参数,它就是个空元组

代码语言:javascript
复制
# 不定长参数默认放在参数后面
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

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

代码语言:javascript
复制
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">func3</span><span class="hljs-params">(name, age, **kwargs)</span>:</span>
    print(<span class="hljs-string">"%s is a good man!He is %d years old!He like"</span> % (name, age))
    print(kwargs, type(kwargs))
func3(<span class="hljs-string">"kaige"</span>, <span class="hljs-number">18</span>, x=<span class="hljs-number">1</span>, y=<span class="hljs-number">2</span>, z=<span class="hljs-number">3</span>)

配合使用

代码语言:javascript
复制
def func(*args, **kwargs):
    print(args)
    print(kwargs)

func(1,2,3,4,x=5,y=6,z=7)

三、函数返回返回值

1、函数返回多个返回值

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

代码语言:javascript
复制
# 游戏中的人物坐标
def func():
    return 1, 2

x, y = func()
print(x, y)
print(type(x))

2、函数也是一种数据

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

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

代码语言:javascript
复制
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++的内联函数,后者的目的是调用小函数时不占用栈内存而增加效率
代码语言:javascript
复制
f = lambda x, y: x + y
print(f(2,3))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、函数基础
    • 1、函数概述
      • 2、最简单的函数(无参无返回值)
        • 3、函数的参数
          • 4、函数的返回值
          • 二、函数参数
            • 1、传递参数
              • 2、关键字参数
                • 3、默认参数
                  • 4、不定长参数
                  • 三、函数返回返回值
                    • 1、函数返回多个返回值
                      • 2、函数也是一种数据
                      • 四、匿名函数
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档