1. 形参名称
在函数定义中,形参是用于指定函数接收的参数的名称。形参在函数内部用于引用传递的值。
python">def foo(name):print(f'name = {name}')foo('John') # name = John
在这个示例中,name
是一个形参,当调用函数时,传入的值会绑定到这个形参上。
2. 类型提示(Type Hints)
类型提示不是强制的类型检查,但它为代码提供了可读性和类型提示的帮助。可以通过在参数名后加上冒号和类型来指定参数的类型提示。返回值类型可以在函数声明后使用箭头->
指定。
此示例中:
tag:str
表示tag
预期是str
类型。a: int
和b: int
表示a
和b
预期是整数类型。-> int
表示函数的返回值类型是整数。
python">def foo(tag:str, a:int, b:int) -> int:print(f'tag = {tag}')return a+bprint(foo('garry', 4, 6)) # 10
print(foo('garry', 4, 6.6)) # 10.6, 类型提示并不会强制 Python 进行类型检查,它只是一个提示功能
输出:
tag = garry
10
tag = garry
10.6
3. 默认值
在函数定义中,可以为参数指定默认值。如果调用函数时没有为某个参数提供值,则会使用该参数的默认值。
python">def foo(name:str='defaultName'):print(f'name = {name}')foo() # name = defaultName
foo('garry') # name = garry
输出:
name = defaultName
name = garry
4. 结合使用:形参名称、类型提示、默认值
python">def display_info(name:str, age:int=30, job:str="Doctor"):print(f'name = {name}, age = {age}, jog = {job}')display_info('garry')
display_info('garry', 20)
display_info('garry', 20, 'Engineer')
输出:
name = garry, age = 30, jog = Doctor
name = garry, age = 20, jog = Doctor
name = garry, age = 20, jog = Engineer
name: str
表示name
需要是一个字符串类型,并且没有默认值。
age: int = 30
表示age
需要是一个整数类型,并且默认值是30
。
job: str = "Doctor"
表示job
需要是一个字符串类型,并且默认值是 "Doctor"
。
-> None
表示函数不返回任何值。
形参名称用于引用传递给函数的值。
类型提示 提供代码的可读性和类型安全性,但不强制执行类型检查。
默认值 用于在调用函数时未传入参数时提供默认值。
5. Optional
在Python中,Optional
是typing
模块中的一种类型提示,表示某个参数可以是指定类型,也可以是None
。Optional
常用于函数参数中,帮助清晰地表明某个参数是可选的,也即可以传递一个值,也可以传递None
。
当一个函数参数的值可以是某种类型或None 时
,使用Optional
来明确这一点。
Optional[X]
实际上是Union[X, None]
的一种简写方式,表示这个参数的值可以是类型X
或 None
。
python">from typing import Optionaldef foo(name:Optional[str]=None)->None:if name is None:print("name is not provided.")else:print("name is", name)def bar(name:Optional[str])->None:if name:print(f"name = {name}")else:print("name not provided")foo()
bar(None)
输出:
name is not provided.
name not provided