首页 > 编程语言 >Python function argument All In One

Python function argument All In One

时间:2023-06-02 14:58:11浏览次数:64  
标签:function Python args argument 60 参数 arguments print

Python function argument All In One

Python 函数参数

https://docs.python.org/3/library/typing.html

https://docs.python.org/3/library/typing.html#typing.ParamSpec.args

function argument types

  1. default arguments
  2. keyword arguments
  3. positional arguments
  4. arbitrary positional arguments
  5. arbitrary keyword arguments

https://levelup.gitconnected.com/5-types-of-arguments-in-python-function-definition-e0e2a2cafd29

https://pynative.com/python-function-arguments/

强制位置参数

Python 3.8 新增了一个函数形参语法:

/, 用来指明前面的函数形参必须使用指定位置参数,不能使用关键字参数的形式;
*, 用来指明后面的函数形参必须使用指定关键字参数,不能使用位置参数的形式;

在以下的例子中,a 和 b 必须使用位置形参 ,c 或 d 可以是位置形参或关键字形参,而 e 和 f 必须使用关键字形参:

def f(a, b, /, c, d, *, e, f):
    print("位置参数", a, b)
    print("c 或 d 可以是位置形参或关键字形参", c, d)
    print("关键字参数", e, f)
    # print(a, b, c, d, e, f)

# 正确的使用方法 ✅
f(10, 20, 30, d=40, e=50, f=60)

# 错误的使用方法 ❌
# b 不能使用关键字形参
f(10, b=20, c=30, d=40, e=50, f=60)

# e 不能使用位置形参
f(10, 20, 30, 40, 50, f=60)

https://www.runoob.com/python3/python3-function.html

demos

#!/usr/bin/env python3
# coding: utf8

def func_args(arg1: int, arg2: str = None, arg3: float = 1.0, arg4: bool = True):
  print("arg1 {}".format(arg1))
  print("arg2 {}".format(arg2))
  print("arg3 {}".format(arg3))
  print("arg4 {}".format(arg4))
  print("\n")

# 全部使用匿名参数 ✅
func_args(60, "LEDs", 0.2, False)

# 全部使用匿名参数 ✅
func_args(arg1=60, arg2="LEDs", arg3=0.2, arg4=False)

# 混合使用,前面匿名参数,后面具名参数 ✅
func_args(60, "LEDs", arg3=0.2, arg4=False)

# 混合使用,前面匿名参数,中间具名参数,后面匿名参数 ❌
# func_args(60, "LEDs", arg3=0.2,  False)
# Positional argument cannot appear after keyword arguments Pylance ❌

"""
positional argument / keyword arguments
https://www.cnblogs.com/xgqfrms/p/17451650.html#5182186
https://docs.python.org/3/library/typing.html
"""

$  chmod +x ./function-pass-multi-args.py
$ ./function-pass-multi-args.py
arg1 60
arg2 LEDs
arg3 0.2
arg4 False

arg1 60
arg2 LEDs
arg3 0.2
arg4 False

arg1 60
arg2 LEDs
arg3 0.2
arg4 False

image

#!/usr/bin/env python3
# coding: utf8

def f(a, b, /, c, d, *, e, f):
    print("位置参数", a, b)
    print("c 或 d 可以是位置形参或关键字形参", c, d)
    print("关键字参数", e, f)
    # print(a, b, c, d, e, f)

# 正确的使用方法 ✅
f(10, 20, 30, d=40, e=50, f=60)

# 错误的使用方法 ❌
# b 不能使用关键字形参
f(10, b=20, c=30, d=40, e=50, f=60)

# e 不能使用位置形参
f(10, 20, 30, 40, 50, f=60)

$ pyhthon3 ./function-mix-args.py
# OR
$ py3 ./function-mix-args.py
位置参数 10 20
c 或 d 可以是位置形参或关键字形参 30 40
关键字参数 50 60
Traceback (most recent call last):
  File "/Users/xgqfrms-mm/Documents/github/Raspberry-Pi/Pi-4B/ws2812b-led-strip/./function-mix-args.py", line 15, in <module>
    f(10, b=20, c=30, d=40, e=50, f=60)
TypeError: f() got some positional-only arguments passed as keyword arguments: 'b'

image

(

标签:function,Python,args,argument,60,参数,arguments,print
From: https://www.cnblogs.com/xgqfrms/p/17451728.html

相关文章

  • # yyds干货盘点 # #经验分享# #网络爬虫# #数据分析# #Python# #每日打卡# #进阶学习#
    大家好,我是皮皮。一、前言前几天在Python群【洋洋】问了一个Python基础的问题,这里拿出来给大家分享下。二、实现过程这里【kim】给出了代码,如下所示:的确满足了粉丝的需求。很多人应该和我一样,想到的是zip吧。zip完全可以,可是他说要for,所以上面演示的是for循环。那么如果通过zip函数......
  • Adafruit CircuitPython NeoPixel All In One
    AdafruitCircuitPythonNeoPixelAllInOneRaspberryPi&Python&WS2812BRGBLEDStripneopixel#installforcurrentuser$pip3installadafruit-circuitpython-neopixel#installsystem-wide$sudopip3installadafruit-circuitpython-neopixe......
  • ubuntu16 python2 安装M2Crypto报错
    正文pip2installM2Crypto#报错:#unabletoexecute'swig':Nosuchfileordirectory#error:command'swig'failedwithexitstatus1#解决:sudoaptinstallswig#继续pip2installM2Crypto,又报错:#src/SWIG/_m2crypto_wrap.c:149:21:fat......
  • 《深度剖析CPython解释器》16. Python函数机制的深度解析(第三部分): 闭包的底层实现
    https://www.cnblogs.com/traditional/p/13580694.html楔子上一篇我们看了函数是如何调用的,这一次我们看一下函数中局部变量的访问、以及闭包相关的知识。函数中局部变量的访问我们说过函数的参数和函数内部定义的变量都属于局部变量,所以它也一样是通过静态的方式进行访问。......
  • python把指定文件夹内所有文件和子文件夹大写全部改为小写
    来源:http://www.shanhubei.com/archives/2622.html接手老项目,里面的文档大小心不同意,而在linux中对大小写又敏感。所以那就统一下把所有文件和文件夹全部转为小写#!/usr/bin/pythonimportsys,ostotal=0defrename(directory):globaltotalifdirectory!=dir......
  • python安装pyaudio
    python安装pyaudio1.环境python>=3.72.安装直接用pip安装会报错error:command'C:\\ProgramFiles(x86)\\MicrosoftVisualStudio14.0\\VC\\BIN\\x86_amd64\\cl.exe'failedwithexitcode2---到https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio......
  • 使用 mysql-replication python监听mysql binlog 实时同步数据
    使用mysql-replicationpython监听mysqlbinlog实时同步数据文章目录使用mysql-replicationpython监听mysqlbinlog实时同步数据前言一、环境二、安装与配置1.首先安装mysql-replication2.参数3.配置数据库4.读取binlog日志总结前言数据库的基础信息需要频繁访问,需要存入red......
  • 使用 wkhtmltopdf python html转pdf
    使用wkhtmltopdfpythonhtml转pdf文章目录使用wkhtmltopdfpythonhtml转pdf前言一、环境二、安装与配置1.首先安装pdfkit0.612.pythonhtml转pdf3.url转pdf遇到的问题总结前言使用wkhtmltopdfpythonhtml转pdf。一、环境pdfkit0.61python3.7二、安装与配置1.首先安装pdfk......
  • python包上传到pypi过程
    python包上传到pypi过程提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录python包上传到pypi过程前言一、pypi是什么?二、使用步骤1.创建目录结构2.创建pyproject.toml3.创建README.md4.创建许可证5.打包6.注册pypi账号和testpypi账号7.上传到testpypi8......
  • 项目场景:python pyqt5 threading 多线程 数据混乱
    项目场景:pythonpyqt5threading多线程数据混乱根据配置文件多线程调用接口#问题描述:参考http://www.starky.ltd/2019/09/23/pro-python-concurrency-with-multi-threading/多线程调用接口,取得数据回调修改页面上的值发生混乱不准#原因分析:运行线程数量过多没有顺序......