Python 教程

Python 教程 Python 简介 Python 历史 Python 下载安装和环境配置 Python 入门 Python 语法 Python 输出 Python 注释 Python 变量 Python 数据类型 Python 数值类型 Python 类型转换 Python 字符串 Python 布尔值 Python 运算符 Python 列表 Python 元组 Python 集合 Python 字典 Python If...Else Python While 循环 Python For 循环 Python 函数 Python Range Python 数组 Python 类和对象 Python 继承 Python 迭代 Python 模块 Python 日期时间 Python 数学运算 Python JSON Python 正则表达式 Python PIP Python Try...Except Python 用户输入 Python 字符串格式化

Python 文件处理

Python 文件处理 Python 打开文件 Python 创建/写入文件 Python 删除文件

Python NumPy

NumPy 简介 NumPy 入门 NumPy 创建数组 NumPy 数组索引 NumPy 数组裁切 NumPy 数据类型 NumPy 副本 vs 视图 NumPy 数组形状 NumPy 数组重塑 NumPy 数组迭代 NumPy 数组连接 NumPy 数组拆分 NumPy 数组搜索 NumPy 数组排序 NumPy 数组过滤 NumPy 随机数 NumPy ufunc 通用函数

Python SciPy

SciPy 简介 SciPy 入门 SciPy 常量 SciPy 优化器 SciPy 稀疏数据 SciPy 图表 SciPy 空间数据 SciPy Matlab 数组 SciPy 插值 SciPy 统计显着性检验

Python 机器学习

Machine 机器学习入门 Machine 平均中位数模式 Machine 标准差 Machine 百分位数 Machine 数据分布 Machine 正态数据分布 Machine 散点图 Machine 线性回归 Machine 多项式回归 Machine 多元回归 Machine 缩放 Machine 训练/测试 Machine 决策树

Python MySQL

MySQL 入门 MySQL Create Database MySQL Create Table MySQL Insert MySQL Select MySQL Where MySQL Order By MySQL Delete MySQL Drop Table MySQL Update MySQL Limit MySQL Join

Python MongoDB

MongoDB 入门 MongoDB 创建数据库 MongoDB 创建集合 MongoDB 插入 MongoDB 查找 MongoDB 查询 MongoDB 排序 MongoDB 删除 MongoDB 删除集合 MongoDB 更新 MongoDB 限制

Python 参考手册

Python 参考手册 Python 内置函数 Python 字符串方法 Python 列表/数组方法 Python 字典方法 Python 元组方法 Python 集合方法 Python 文件方法 Python 关键字 Python 内置异常 Python 词汇表

Python 模块参考

Python 内置模块 Python random 随机模块 Python requests 请求模块 Python statistics 统计模块 Python math 数学模块 Python cMath 模块

Python 如何使用

Python 删除列表重复项 Python 反转字符串 Python 添加两个数字

Python 高级教程

Python 常用指引 将Python2代码迁移到Python3 将扩展模块移植到 Python3 Curses 编程 描述器使用指南 函数式编程指引 日志常用指引 日志操作手册 正则表达式使用指南 套接字编程指南 排序指南 Unicode 指南 如何利用urllib包获取网络资源 Argparse 教程 ipaddress 模块介绍 Argument Clinic 的用法 使用DTrace和SystemTap检测CPython 对象注解属性的最佳实践

Python 实例

Python 实例 Python 编译器 Python 练习 Python 测验 NumPy 测验 SciPy 测验


Python 函数参数

参数

信息可以作为参数传递给函数。

参数在函数名之后,用括号括起来。您可以添加任意数量的参数,只需用逗号分隔即可。

以下示例包含一个带有一个参数 (fname) 的函数。调用该函数时,我们传递一个名字,该名字在函数内部用于打印全名:

实例

一个带一个参数的函数:

def my_function(fname):
  print(fname + " Refsnes")

my_function("Emil")
my_function("Tobias")
my_function("Linus")
亲自试一试 »

形参与实参

术语"形参"和"实参"可以指同一件事:传递给函数的信息。

从函数的角度来看:

形参是指函数定义中括号内列出的变量。

实参是指函数被调用时实际传递给函数的值。

实例

def my_function(name): # name is a parameter
  print("Hello", name)

my_function("Emil") # "Emil" is an argument


参数数量

默认情况下,函数调用时必须传入正确数量的参数。

如果你的函数需要 2 个参数,那么你必须传入 2 个参数。

实例

此函数需要 2 个参数,并传入 2 个参数::

def my_function(fname, lname):
  print(fname + " " + lname)

my_function("Emil", "Refsnes")
亲自试一试 »

如果您尝试使用错误数量的参数调用该函数,将会收到错误:

实例

此函数需要 2 个参数,但只收到 1 个:

def my_function(fname, lname):
  print(fname + " " + lname)

my_function("Emil")
亲自试一试 »

默认参数值

您可以为参数指定默认值。如果函数在调用时未传递参数,则使用默认值:

实例

def my_function(name = "friend"):
  print("Hello", name)

my_function("Emil")
my_function("Tobias")
my_function()
my_function("Linus")
亲自试一试 »

实例

country 参数的默认值:

def my_function(country = "Norway"):
  print("I am from", country)

my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
亲自试一试 »

关键字参数

您可以使用 key = value 语法发送参数。

实例

def my_function(animal, name):
  print("I have a", animal)
  print("My", animal + "'s name is", name)

my_function(animal = "dog", name = "Buddy")
亲自试一试 »

这样一来,使用关键字参数时,参数的顺序就无关紧要了。

实例

def my_function(animal, name):
  print("I have a", animal)
  print("My", animal + "'s name is", name)

my_function(name = "Buddy", animal = "dog")
亲自试一试 »

在 Python 文档中,关键字参数 通常缩写为 kwargs。


位置参数

当您在不使用关键字参数的情况下调用函数时,这些参数被称为位置参数。

位置参数必须按正确的顺序排列:

实例

def my_function(animal, name):
  print("I have a", animal)
  print("My", animal + "'s name is", name)

my_function("dog", "Buddy")
亲自试一试 »

位置参数的顺序很重要:

实例

改变顺序会改变结果:

def my_function(animal, name):
  print("I have a", animal)
  print("My", animal + "'s name is", name)

my_function("Buddy", "dog")
亲自试一试 »

混合使用位置参数和关键字参数

您可以在函数调用中混合使用位置参数和关键字参数。

但是,位置参数必须位于关键字参数之前。

实例

def my_function(animal, name, age):
  print("I have a", age, "year old", animal, "named", name)

my_function("dog", name = "Buddy", age = 5)
亲自试一试 »

传递不同数据类型

您可以将任何数据类型作为参数传递给函数(字符串、数字、列表、字典等)。

函数内部将保留数据类型。

实例

将列表作为参数传递:

def my_function(fruits):
  for fruit in fruits:
    print(fruit)

my_fruits = ["apple", "banana", "cherry"]
my_function(my_fruits)
亲自试一试 »

实例

将字典作为参数传递:

def my_function(person):
  print("Name:", person["name"])
  print("Age:", person["age"])

my_person = {"name": "Emil", "age": 25}
my_function(my_person)
亲自试一试 »

返回值

函数可以使用 return 语句返回值:

实例

def my_function(x, y):
  return x + y

result = my_function(5, 3)
print(result)
亲自试一试 »

返回不同的数据类型

函数可以返回任何数据类型,包括列表、元组、字典等等。

实例

一个返回列表的函数:

def my_function():
  return ["apple", "banana", "cherry"]

fruits = my_function()
print(fruits[0])
print(fruits[1])
print(fruits[2])
亲自试一试 »

实例

返回元组的函数:

def my_function():
  return (10, 20)

x, y = my_function()
print("x:", x)
print("y:", y)
亲自试一试 »

仅限位置参数

您可以指定一个函数只能有位置参数。

要指定仅限位置参数,请在参数后添加 , /:

实例

def my_function(name, /):
  print("Hello", name)

my_function("Emil")
亲自试一试 »

如果没有 , /,即使函数需要位置参数,实际上也可以使用关键字参数:

实例

def my_function(name):
  print("Hello", name)

my_function(name = "Emil")
亲自试一试 »

使用 , / 时,如果尝试使用关键字参数,将会报错:

实例

def my_function(name, /):
  print("Hello", name)

my_function(name = "Emil")
亲自试一试 »

仅限关键字参数

要指定函数只能使用关键字参数,请在参数前添加 *, :

实例

def my_function(*, name):
  print("Hello", name)

my_function(name = "Emil")
亲自试一试 »

如果没有*,,即使函数需要关键字参数,您也可以使用位置参数:

实例

def my_function(name):
  print("Hello", name)

my_function("Emil")
亲自试一试 »

使用*,时,如果尝试使用位置参数,将会报错:

实例

def my_function(*, name):
  print("Hello", name)

my_function("Emil")
亲自试一试 »

结合使用位置参数和关键字参数

您可以在同一个函数中结合使用这两种参数类型。

位于 / 之前的参数仅支持位置,位于 * 之后的参数仅支持关键字。

实例

def my_function(a, b, /, *, c, d):
  return a + b + c + d

result = my_function(5, 10, c = 15, d = 20)
print(result)
亲自试一试 »