Python - 3.8 新特性之仅位置参数 & 仅关键字参数

简介: Python - 3.8 新特性之仅位置参数 & 仅关键字参数

前置知识


Python 函数:https://www.cnblogs.com/poloyy/p/15092393.html

 

什么是仅限位置形参


  • 仅限位置形参是 Python 3.8 才有的新特性
  • 新增了一个函数形参语法 /
  • 添加了它,表示函数形参只能通过位置参数传递,而不能通过关键字参数形式传递

 

仅限位置形参栗子


def test1(a, b, c):
    print(a, b, c)
test1(a=1, b=2, c=3)
def test(a, /, b, c):
    print(a, b, c)
# 正确
test(1, b=2, c=3)
test(*(1,), b=2, c=3)
# 错误
test(a=1, b=2, c=3)
1 2 3
1 2 3
1 2 3
    test(a=1, b=2, c=3)
TypeError: test() got some positional-only arguments passed as keyword arguments: 'a'


  • 报错信息:test() 得到一些作为关键字参数传递的仅位置参数 ‘a'
  • 在 / 形参的参数只能通过位置参数传递

 

什么是仅限关键字参数


  • 和仅位置参数一样,也是 Python 3.8 的新特性
  • 参数只传 * 代表仅关键字参数
  • 添加了它,表示函数形参只能通过关键字参数传递,而不能通过位置参数传递

 

仅限关键字参数栗子



def f1(a, *, b, c):
    return a + b + c
# 正确
f1(1, b=2, c=3)
f1(1, **{"b": 2, "c": 3})
# 错误
f1(1, 2, c=3)
# 输出结果
6
6
    f1(1, 2, c=3)
TypeError: f1() takes 1 positional argument but 2 positional arguments (and 1 keyword-only argument) were given 


  • 报错信息:接受1个位置参数,但提供了2个位置参数(和1个仅限关键字的参数)
  • 在 * 形参的参数只能通过关键字参数传递

 

/ 和 * 混合栗子


def f(a, /, b, *, c):
    print(a, b, c)
# 正确
f(1, 2, c=3)
f(1, b=2, c=3)
# 错误
f(a=1, b=2, c=3)
f(1, 2, 3)
# 输出结果
1 2 3
1 2 3


栗子二

def f(a, b, /, c, *, d, e):
    print(a, b, c, d, e)
# 正确
f(1, 2, c=3, d=4, e=5)
# 错误
f(1, 2, 3, 4, 5)
# 输出结果
1 2 3 4 5 
相关文章
|
14天前
|
Python
python函数的参数学习
学习Python函数参数涉及五个方面:1) 位置参数按顺序传递,如`func(1, 2, 3)`;2) 关键字参数通过名称传值,如`func(a=1, b=2, c=3)`;3) 默认参数设定默认值,如`func(a, b, c=0)`;4) 可变参数用*和**接收任意数量的位置和关键字参数,如`func(1, 2, 3, a=4, b=5, c=6)`;5) 参数组合结合不同类型的参数,如`func(1, 2, 3, a=4, b=5, c=6)`。
14 1
|
1月前
|
Python
Python传参数:传值还是传址?
【2月更文挑战第18天】
48 6
|
2月前
|
测试技术 API Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性
44 2
|
4月前
|
Python
Python 的异步编程:什么是异步编程?Python 中的 `async` 和 `await` 关键字是用来做什么的?
Python 的异步编程:什么是异步编程?Python 中的 `async` 和 `await` 关键字是用来做什么的?
|
9天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
13天前
|
安全 API 开发者
Python中使用`requests`库进行请求头与自定义参数设置的技术详解
【4月更文挑战第12天】在Python中,`requests`库是一个强大且灵活的HTTP客户端,用于发送所有类型的HTTP请求。在发送请求时,我们经常需要设置请求头和自定义参数来满足不同的需求。本文将详细探讨如何在Python中使用`requests`库进行请求头和自定义参数的设置。
|
1月前
|
算法 开发者 Python
【Python 基础扫盲 】self参数、__init__方法和.__str__方法的用处和区别?
【Python 基础扫盲 】self参数、__init__方法和.__str__方法的用处和区别?
20 0
C4.
|
1月前
|
Python
Python函数的参数
Python函数的参数
C4.
37 1
|
1月前
|
Python
Python的高级语法及许多特性
Python的高级语法及许多特性
20 0
|
1月前
|
机器学习/深度学习 算法 计算机视觉
python机器学习超参数调优
超参数(hyper parameters)就是机器学习或深度学习算法中需要预先设置的参数,这些参数不是通过训练数据学习到的参数;原始算法一般只给出超参数的取值范围和含义,根据不同的应用场景,同一个算法的同一超参数设置也不同。【2月更文挑战第14天】
68 0

热门文章

最新文章