云边日落 文章本天成,妙手偶得之。 (宋·陆游·文章)
博主 云边日落
渝ICP备2021002886号-1渝公网安备50022502000591号博主 11月5日 在线自豪地使用 Typecho 建站搭配使用 🌻Sunny 主题当前在线 1 人
歌曲封面 未知作品
  • 歌曲封面“魔女の宅急便”~ルージュの伝言松任谷由実

渝ICP备2021002886号-1

渝公网安备50022502000591号

网站已运行 4 年 152 天 18 小时 40 分

Powered by Typecho & Sunny

2 online · 42 ms

Title

学习的第一个山峰——函数

酒笙

·

·

227次阅读
python
Article
⚠️ 本文最后更新于2021年07月12日,已经过了1228天没有更新,若内容或图片失效,请留言反馈

函数

在前面我们已经学习了字典,列表等数据类型,以及循环,今天呢,我们就要迈向学习中的第一个山峰——函数。
首先,我们来了解一下函数为什么会出现,它解决的问题又是什么。

  1. 函数的出现,是为了简洁代码块,同时提高可阅读性。一个程序由若干个代码块编辑,其中会有需要重复写的内容,这样就大大的增加工作时间,以及代码的可阅读性和观赏性,从而变出现了函数。
  2. 代码编写成函数后,重复内容只需要调用,实现了代码复用和降低编程难度

定义一个函数

函数基本的语法格式如下:

♾️ python 代码:
def 函数名称(参数1[,参数2,参数3...]):
    代码块
    代码块
    return 返回值
  • 函数代码块以 def 关键词开头,后接函数名称和圆括号 ()。
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号 : 起始,并且 缩进
  • return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
    Test

我们来看一下函数的基本写法:

♾️ python 代码:
#建立一个名为hello的函数
def hello():
    print("哈哈哈哈")
#调用函数hello
hello()
hello()
hello()
hello()

上面的函数运行之后,会输出五次 hello 里面的内容,如果不用函数,就要一行一行的写。显得很繁琐。

♾️ python 代码:
哈哈哈哈
哈哈哈哈
哈哈哈哈
哈哈哈哈

我们来看一下,复杂一点的函数。

♾️ python 代码:
a = int(input("输入吧:"))
b = int(input("输入吧:"))
#建立一个名为hello的函数
def hello(a,b):
    if a > b:
        print("土豆")
        return a
    elif a == b:
        print("还是")
        return a,b
    else:
        print("优秀")
        return b
print(hello(a,b))

我们来用函数计算一下面积:

♾️ python 代码:
a = float(input("输入长:"))
b = float(input("输入宽:"))
#建立一个名为area的函数
def area(a,b):
    return a*b
print("长:",a,"宽:",b,"面积:",area(a,b))

关键词参数(参数名称=值)

该参数使用的方式是在调用函数时,参数用 参数名称=值 这种形式传递。其实在上述传递一个和多个参数的时候,也可以应用该方式传递参数,例如修改代码如下:

♾️ python 代码:
# 声明一个带一个参数的函数
def show(name):
    print("传递进来的姓名是:", name)

show(name="橡皮擦")


# 声明一个带多参数的函数
def show1(name, age):
    print("传递进来的姓名是:", name, " 年龄是:", age)

show1(name="土豆", age=20)
参数默认值

在定义函数的时候可以给参数一个默认值,如果调用该函数没有给该参数赋值,程序会使用默认值而不会报错。

♾️ python 代码:
#建立一个名为jiushneg的函数
def jiushneg(name="土豆"):
    print("我得名字是:",name)
jiushneg()

这样后面不跟参数也不会报错,如果不给定的话,就会报错哟,也就是说,下面这个代码是错误的.

♾️ python 代码:
#建立一个名为jiushneg的函数
def jiushneg(name):
    print("我得名字是:",name)
jiushneg()
#会报错

值得注意的是,多个参数下,如果只有一个有默认值,那么把这个写在最后面,也就是最右侧。

函数返回值,return语句

函数如果没有写返回值即 return ,那 Python 会自动在函数体内增加一行代码 return None 。函数的返回值可以赋值给一个变量,通过打印该变量,即可知道返回的具体内容。

♾️ python 代码:
#建立一个名为jiushneg的函数
def jiushneg(name="土豆"):
    print("我得名字是:",name)
    return
print(jiushneg())

运行后就会返回一个 None

♾️ python 代码:
我得名字是: 土豆
None

返回一个或多个值

如果说想好返回一个值,那么就在 return 后面跟上参数即可,多个值用 , 号隔开

♾️ python 代码:
#建立一个名为jiushneg的函数
def jiushneg(a = 18,name="土豆"):
    print("我得名字是:",name,"我得大小是:",a)
    return name    #返回一个值
    return name,a    #返回多个值
print(jiushneg())

传递任意数量的参数

在 Python 编写代码的过程中,很容易出现一种情况是你不知道有多少个参数,这时函数定义时参数就不好设定了,好在 Python 已经想到了这个情况。

♾️ python 代码:
def show(*keys):
    print("传入的参数可以循环打印")
    for key in keys:
        print(key)

show(1,2,3,4,5,6,7)

该语法重点就是 * ,后面跟个参数名就OK了。
有一般参数,又有不定数量的参数,就使用下面的格式。

♾️ python 代码:
def show(name,size,*keys):
    print("传入的参数可以循环打印")
    print(name)
    print(size)
    for key in keys:
        print(key)

show("土豆",18,"大","大","大")

一般参数与任意数量的关键词参数

参数里面还有一种情况是需要传不定数量的关键词参数,这又如何设计呢?

♾️ python 代码:
def show(**args):
    print("传入的参数可以循环打印")

    for key in args.items():
        print(key)

show(name="橡皮擦", size=18)

加了两个星号 ** 的参数会以字典的形式导入。

匿名函数

python 使用 lambda 来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法

lambda 函数的语法只包含一个语句,如下:

♾️ python 代码:
lambda [参数列表]:表达式
# 英文语法格式
lambda [arg1[,arg2,arg3....argN]]:expression

我们来看一下实际演示代码:

♾️ python 代码:
fun = lambda x:x+1
print(fun(2))

lambda 表达式与 def 定义函数的区别

  1. 一个有函数名,一个没有函数名
  2. lambda 表达式 : 后面,只能有一个表达式,多个会出现错误。
  3. for 语句不能用在 lambda 中使用
  4. lambda 表达式不能共享给别的程序调用
  5. lambda 表达式能作为其它数据类型的值比如:
♾️ python 代码:
my_list = [lambda a: a**2, lambda b: b**2]
fun = my_list[0]
print(fun(2))

总结

函数还有很多,我们先学习一小部分。慢慢来,一步有个脚印。
::(酸爽)

现在已有 0 条评论,4 人点赞
Author:酒笙
作者
学习的第一个山峰——函数
当前文章累计共 3984 字,阅读大概需要 4 分钟。
一文搞定docker
2022年3月28日 · 3评论
青栀AI:你的超级全能AI小伙伴!
2024年8月19日 · 1评论
青龙面板安装
2021年12月17日 · 1评论
Comment:共0条
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 不再显示
博主