ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python 3 function & *args & **kwargs All In One

2022-08-20 01:33:54  阅读:159  来源: 互联网

标签:function Python arg1 arg2 args arg5 kwargs print


Python 3 function & *args & **kwargs All In One


#!/usr/bin/env python3
# coding=utf-8

__author__ = 'xgqfrms'
__editor__ = 'vscode'
__version__ = '1.0.1'
__copyright__ = """
  Copyright (c) 2012-2050, xgqfrms; mailto:xgqfrms@xgqfrms.xyz
"""

"""
  /**
   *
   * @author xgqfrms
   * @license MIT
   * @copyright xgqfrms
   * @created 2022-08-19
   *
   * @description
   * @augments
   * @example
   * @link
   *
  */
"""




def func(arg1, arg2, *args, arg5):
  print(arg1, arg2)
  print(*args)
  print(type(*args))
  # tuple 元组
  print(arg5)
  return None;

# *args 后面的参数必须是命名参数 ✅
func(1,2, [3, 4], arg5 = 5)
# func(1,2, 3, 4, arg5 = 5)
# TypeError: type() takes 1 or 3 arguments ❌ print(type(*args))

print('\n')
# **kwargs 后面的不能再有任何参数了 ✅
def test(arg1, arg2, **kwargs):
  print(arg1, arg2)
  print(kwargs)
  print('type =', type(kwargs))
  # dict 字典
  for key, value in kwargs.items():
    print(key, '=', value)
  return None;

test(1,2, third = 3, four = 4)



function


def sum(arg1, arg2):
  # print(arg1, arg2)
  return arg1 + arg2;

total = sum(1,2)
print(total)
# 3

lambda function

匿名函数

类似 js ES6, Arrow Function


total = (lambda arg1, arg2 : arg1 + arg2)(1, 2)
print(total)
# 3

*args

不定参数 / 不定匿名参数

类似 js ES6, ...rest


def func(arg1, arg2, *args, arg5):
  print('\n')
  print(arg1, arg2)
  for arg in args:
    print(arg)
  print(arg5)
  return None;

func(1,2, 3, 4, 5)


#!/usr/bin/python3
# -*- coding: UTF-8 -*-

def func(arg1, arg2, *args, arg5):
  print('\n')
  print(arg1, arg2)
  # print(type(*args))
  print(*args)
  print(arg5)
  return None;

# func(1,2, 3, 4, 5)
# TypeError: func() missing 1 required keyword-only argument: 'arg5' ❌

# *args 后面的参数必须是命名参数 ✅
func(1,2, [3, 4], arg5 = 5)
func(1,2, 3, 4, arg5 = 5)
# TypeError: type() takes 1 or 3 arguments ❌

"""
1 2
[3, 4]
5

1 2
3 4
5
"""

**kwargs

不定命名参数


#!/usr/bin/python3
# -*- coding: UTF-8 -*-

print('\n')

# **kwargs 后面的不能再有任何参数了 ✅
def test(arg1, arg2, **kwargs):
  print(arg1, arg2)
  for key, value in kwargs.items():
    print(key, '=', value)
  return None;

test(1,2, third = 3, four = 4)

# 1 2
# third = 3
# four = 4

"""

def test(arg1, arg2, **kwargs):
  print(arg1, arg2)
  for arg in **kwargs
    print(arg)
  return None;

test(1,2, third = 3, four = 4)
# SyntaxError: invalid syntax

def test(arg1, arg2, *kwargs):
  print(arg1, arg2)
  print(*kwargs.third)
  print(*kwargs.four)
  return None;

test(1,2, third = 3, four = 4)
# TypeError: test() got an unexpected keyword argument 'third'❌


def test(arg1, arg2, *kwargs, arg5):
  print(arg1, arg2)
  print(*kwargs.third)
  print(*kwargs.four)
  return None;

test(1,2, third = 3, four = 4, 5)
# SyntaxError: positional argument follows keyword argument ❌
"""

Python REPL

#!/usr/bin/python
# -*- coding: UTF-8 -*-


#!/usr/bin/python3
# -*- coding: UTF-8 -*-

https://www.runoob.com/try/runcode.php?filename=helloworld_cn&type=python

https://www.runoob.com/try/runcode.php?filename=helloworld_cn&type=python3

refs

https://www.freecodecamp.org/news/args-and-kwargs-in-python/

https://book.pythontips.com/en/latest/args_and_kwargs.html



©xgqfrms 2012-2020

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载

标签:function,Python,arg1,arg2,args,arg5,kwargs,print
来源: https://www.cnblogs.com/xgqfrms/p/16603099.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有