python高级之函数的定义和调用

Python函数的定义和调用

image

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。


定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

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

image


语法

Python 定义函数使用 def 关键字,一般格式如下:

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

(0)空函数

def login_app():
pass
  • 函数体为pass代表什么都不做,称之为空函数。
  • 定义空函数通常是有用的,因为在程序设计的开始,往往是先想好程序都需要完成什么功能,然后把所有功能都列举出来用pass充当函数体“占位符”,这将使得程序的体系结构立见,清晰且可读性强。
  • 例如要编写一个ftp程序
    • 我们可能想到的功能有用户认证,下载,上传,浏览,切换目录等功能
    • 可以先做出如下定义:
def auth_user():
"""user authentication function"""
pass
def download_file():
"""download file function"""
pass
def upload_file():
"""upload file function"""
pass
def ls():
"""list contents function"""
pass
def cd():
"""change directory"""
pass

(1)无参无返回值

def common_user_pwd():
user=input('请输入用户名: ').strip()
pwd=input('请输入密码: ').strip()

(2)有参无返回值

  • 参数是函数的调用者向函数体传值的媒介
  • 没有return,无返回值
def test(name):
print(f"Hello, {name}!")
test("xiao zhao") # Output: Hello, xiao zhao!

(3)有多个参数无返回值

def add(a, b):
result = a + b
print(f"The sum of {a} and {b} is {result}")
add_numbers(6, 7) # Output: The sum of 6 and 7 is 13

(4)多个参数一个返回值

# 定义一个函数,函数有两个参数
def add_numbers(a, b):
result = a + b
print(f"The sum of {a} and {b} is {result}")
return result # 使用 return 关键字将想要返回的结果返回出去
## 调用上面设置的函数
res = add_numbers(3, 5) # Output: The sum of 3 and 5 is 8
print(res) # 8

(5)多个参数多个返回值

def rectangle_info(length, width):
area = length * width
perimeter = 2 * (length + width)
return area, perimeter
# 解压赋值
area, perimeter = rectangle_info(4, 5)
print(f"Area: {area}, Perimeter: {perimeter}")
# Area: 20, Perimeter: 18

调用函数与函数返回值

定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。

这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。

如下实例调用了 printme() 函数:

# 定义函数
def printme( str ):
# 打印任何传入的字符串
print (str)
return
# 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")

以上实例输出结果:

我要调用用户自定义函数!
再次调用同一函数

函数的使用分为定义阶段与调用阶段,定义函数时只检测语法,不执行函数体代码,函数名加括号即函数调用,只有调用函数时才会执行函数体代码

#定义阶段
def foo():
print('in the foo')
bar()
def bar():
print('in the bar')
#调用阶段
foo()

执行结果:

in the foo
in the bar

定义阶段函数foo与bar均无语法错误,而在调用阶段调用foo()时,函数foo与bar都早已经存在于内存中了,所以不会有任何问题。

按照在程序出现的形式和位置,可将函数的调用形式分为三种:

#1、语句形式:
foo()
#2、表达式形式:
m=my_min(1,2) #将调用函数的返回值赋值给x
n=10*my_min(1,2) #将调用函数的返回值乘以10的结果赋值给n
#3、函数调用作为参数的形式:
# my_min(2,3)作为函数my_min的第二个参数,实现了取1,2,3中的较小者赋值给m
m=my_min(1,my_min(23))

若需要将函数体代码执行的结果返回给调用者,则需要用到return。return后无值或直接省略return,则默认返回None,return的返回值无类型限制,且可以将多个返回值放到一个元组内。

def test(x,y,z):
...
return x,y,z #等同于return (x,y,z)
...
res=test(1,2,3)
print(res)
## (1, 2, 3)

return是一个函数结束的标志,函数内可以有多个return,但只执行一次函数就结束了,并把return后定义的值作为本次调用的结果返回。
return是函数结束的标志,即函数体代码一旦运行到return会立刻终止函数的运行,并且会将return后的值当作本次运行的结果返回:

1.返回None:函数体内没有return。

2.返回一个值:return值。

3.返回多个值:用逗号隔开多个值,会被return返回成元组。

posted @   Xiao0101  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示

目录