Python定义函数时可以为参数指定名称、类型提示和默认值

发布于:2024-10-10 ⋅ 阅读:(149) ⋅ 点赞:(0)

1. 形参名称

在函数定义中,形参是用于指定函数接收的参数的名称。形参在函数内部用于引用传递的值。

def foo(name):
    print(f'name = {name}')

foo('John')  # name = John

在这个示例中,name是一个形参,当调用函数时,传入的值会绑定到这个形参上。

2. 类型提示(Type Hints)

类型提示不是强制的类型检查,但它为代码提供了可读性和类型提示的帮助。可以通过在参数名后加上冒号和类型来指定参数的类型提示。返回值类型可以在函数声明后使用箭头->指定。

此示例中:
tag:str表示tag预期是str类型。a: intb: int表示ab预期是整数类型。-> int表示函数的返回值类型是整数。

def foo(tag:str, a:int, b:int) -> int:
    print(f'tag = {tag}')
    return a+b

print(foo('garry', 4, 6))    # 10
print(foo('garry', 4, 6.6))  # 10.6, 类型提示并不会强制 Python 进行类型检查,它只是一个提示功能

输出:

tag = garry
10
tag = garry
10.6

3. 默认值

在函数定义中,可以为参数指定默认值。如果调用函数时没有为某个参数提供值,则会使用该参数的默认值。

def foo(name:str='defaultName'):
    print(f'name = {name}')

foo()           # name = defaultName
foo('garry')    # name = garry

输出:

name = defaultName
name = garry

4. 结合使用:形参名称、类型提示、默认值

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中,Optionaltyping模块中的一种类型提示,表示某个参数可以是指定类型,也可以是NoneOptional常用于函数参数中,帮助清晰地表明某个参数是可选的,也即可以传递一个值,也可以传递None

当一个函数参数的值可以是某种类型或None 时,使用Optional来明确这一点。
Optional[X]实际上是Union[X, None]的一种简写方式,表示这个参数的值可以是类型XNone

from typing import Optional

def 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