Python(三):函数

编程入门 行业动态 更新时间:2024-10-23 09:39:56

Python(三):<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数"/>

Python(三):函数

文章目录

  • 3 函数
    • 3.1 函数声明与调用
    • 3.2 函数参数
    • 收集参数 (int argc, char \*argv[])
    • 3.3 函数的返回值
    • 3.4 变量的作用域
    • 3.5 内嵌函数和闭包(Closure)
    • 3.6 lambda表达式
    • 3.7 递归

3 函数

函数是最重要的语句封装形式之一。

3.1 函数声明与调用

Python中使用def关键字来声明函数,并且由于Python对泛型(多态)的支持,函数没有类型声明。
在同文件内,直接键入函数名即可调用(同样必须先定义)。

# 一个简单的例子
def printHello():print("hello!")printHello()
hello!

3.2 函数参数

函数的参数通过括号内传递,支持带默认值的参数(可选参数),以及关键字参数。

# 普通参数
def printHello(name) :print("hello, ", name)printHello("wuyao")
hello,  wuyao
# 带默认值的参数
def printHello(name="zhaizhanhu") :print("hello, ", name)printHello()
hello,  zhaizhanhu
# 支持关键字,防止参数交叉产生错误
def printHello(serveName, clientName) :print("hello, ", clientName)print("my name is ", serveName)printHello(clientName = "zhaizhanhu", serveName = "wuyao")
hello,  zhaizhanhu
my name is  wuyao

收集参数 (int argc, char *argv[])

C/C++中我们可以通过(int argc, char *argv[])来获取参数列表,Python中也可以提供*来实现,其默认将所有参数打包为一个元组。

def paraget(*para) :print("paraNumbers : ", len(para))for each in para :print(each, end="  ")paraget(1,2,"wuyao")
paraNumbers :  3
1  2  wuyao  
# 对于使用了`*`来搜集参数的函数,可以使用关键字的方法支持其他参数
def paraget(*para, name) :print("paraNumbers : ", len(para))for each in para :print(each, end="  ")paraget(1,2,name="wuyao")
paraNumbers :  2
1  2  

3.3 函数的返回值

使用return语句实现。

def add(num1,num2) :return num1 + num2add(51,5.1)
56.1

返回多个值可以采用列表等形式。

def info(name):if name == "wuyao":return ["wuyao","19B","male","188..."]    elif name == "zhaizhanhu" :return ["zhaizhanhu","19S","male","250..."]else :return "error name!"info("zhaizhanhu")
['zhaizhanhu', '19S', 'male', '250...']
info("wanchunlei")   # 不存在这个名字
'error name!'

3.4 变量的作用域

变量的作用域与C/C++类似,函数内部定义的变量仅在函数内部可见。全局变量是在文件中直接声明的,局部变量是在子函数中声明的;全局变量在整个文件内都可见,子函数中若存在和全局变量重名的变量,会在子函数区间覆盖全局变量,除非使用global关键字。

3.5 内嵌函数和闭包(Closure)

A函数内部可以嵌套函数B,并且被嵌套的函数B仅对于函数A可见。
闭包指的是内嵌的函数B对A函数中变量的引用。

# 直接给函数和函数的嵌套函数传参的方法
def printHello(greeting) :def printName(name) :print(greeting,", ",name)return printNameprintHello("hi")("wuyao")
hi ,  wuyao

3.6 lambda表达式

lambda表达式可以定义轻量级的运算函数,来简化代码。基本格式是表达式名 = lambda para0, para,....paran : 函数体

sqrt = lambda a,b,c : (-b+(b**2 - 4*a*c)**0.5)/(2*a)   # 一元二次方程求根公式
sqrt(1,-2,1)
1.0

3.7 递归

递归需要反复调用函数,压栈弹栈,并且递归是非常占用资源的,其他语言支持尾递归优化来改善这个问题,python目前不支持,尽管这是一个经典方法,但没事不要用。
用法上与C/C++大同小异,都是利用return语句再次调用自身实现的

更多推荐

Python(三):函数

本文发布于:2024-02-05 09:12:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1674037.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!