必须参数

最常见的传参

def say(arg):
print(arg)
say("Hello world")

输出:

Hello world

默认参数

def say(arg, arg2="world"):
print(arg + arg2)
say("Hello")

输出:

Helloworld

默认参数的要求:
1.默认参数在函数定义的时候传入默认值
2.默认参数要在必须参数后面,不能默认参数在必须参数之前

我们一般调用函数的时候一般就是采用,必须参数正常传递,然后默认参数采用关键字传参的办法例如:

requests.get(url,allow_redirects=False)

这个例子是requests禁止重定向需要传递的一个参数
因为默认参数一般都是特别多,而且不需要每次调用的时候都自己传递,只有遇到特殊需求的时候进行更改

关于*args和*kwargs的使用方法

例子:

def test(a,*args,**kwargs):
print(a,args,kwargs)
test(1,2,3,4,c=5,d=6)

输出:

1 (2, 3, 4) {'c': 5, 'd': 6}

我相信很多文章都说了,形参的顺序不能变化,必须是 test(a,*args,**kwargs) 这样一个顺序
形参a是必须参数,必须参数必须有相应的实参对应,其余的赋给 *args并形成一个元祖 ,剩余采用关键字传参的都付给 **kwargs并形成一个字典

说几个其余文章没有提到的:

  1. *args, **kwargs不是固定的变量名,哪怕形参叫 fuck 也是可以运行的,带几个*才是区分这几个参数的关键

  2. 这三种类型的参数只有必须参数必须传递,其余的参数都可以不传递
    例如:不传递 *args

    def test(a,*args,**kwargs):
    print(a,args,kwargs)
    test(1,c=5,d=6)

    输出:

    1 () {'c': 5, 'd': 6}

    不传递 **kwargs参数

    def test(a,*args,**kwargs):
    print(a,args,kwargs)
    test(1,2,3,4)

    输出:

    1 (2, 3, 4) {}
  3. 这几种类型的参数不只是在函数定义中可以使用,函数调用的时候也可以使用

    def a(b,c):
    print(b,c) dict_ = dict(
    b = 1,
    c=2
    ) a(**dict_)

    输出:

    1 2

    不过需要注意,字典的键必须对应形参的名字

    def a(b,c):
    print(b,c) tuple_ = (1,2)
    a(*tuple_)

    输出:

    1 2

其实归根结底这些都是拆包

关于python函数传参的更多相关文章

  1. python函数传参

    之前一直没有注意过该问题,在leetcode144中写递归发现该问题,不知道递归函数传参是指针还是引用. 参考:http://c.biancheng.net/view/2258.html 如果是不可变 ...

  2. python -- 函数传参

    一.参数传入规则 可变参数允许传入0个或任意个参数,在函数调用时自动组装成一个tuple: 关键字参数允许传入0个或任意个参数,在函数调用时自动组装成一个dict: 1. 传入可变参数: def ca ...

  3. 【JS学习笔记】函数传参

    比如仅仅改变背景的颜色 函数传参:参数就是占位符. 那么在什么时候用传参呢?函数里定不下来的东西. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  4. c# 内存的具体表现- 通用类型系统 深拷贝 浅拷贝 函数传参

    c# 通用类型系统 及变量在 深拷贝 浅拷贝 函数传参 中的深层次的表现 在编程中遇到了一些想不到的异常,跟踪发现,自己对于c#变量在内存上的表现理解有偏差,系统的学习并通过代码实验梳理了各种情况下, ...

  5. 函数传参,改变Div任意属性的值&&图片列表:鼠标移入/移出改变图片透明度

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. x64汇编第三讲,64位调用约定与函数传参.

    目录 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 二丶x64汇编 2.1汇编详解 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 在x86下我们汇编的传参如下: ...

  7. Python类三种方法,函数传参,类与实例变量(一)

    1 Python的函数传递: 首先所有的变量都可以理解为内存中一个对象的'引用' a = 1 def func(a): a = 2 func(a) print(a) # 1 a = 1 def fun ...

  8. js函数传参

    函数传参:重用代码,首先保持html代码相对一致,把核心主程序用函数包起来,把每组不同的值找出来,通过传参的方式减少代码的使用 下面代码是我早期练习的,大家随便看看就好 <!DOCTYPE ht ...

  9. 【又长见识了】函数传参,params参数,ref和out参数详解

    一.原来函数这样传参 先看一个函数和函数调用. static void Main(string[] args) { ; Test(num);//局部变量在使用之前赋值 //Test(10); //直接 ...

  10. JS中的函数传参

    前言: 函数分为有参有返回值,有参无返回值,无参无返回值,无参有返回值:那么对于无参数的函数你想使用函数的调用怎么办呢?如果你想封装一个代码,实现多种功能,但是形参大于实参或者实参大于形参又该如何?本 ...

随机推荐

  1. MySQL 中的锁机制

    介绍锁机制 技术是为了解决问题而生的,锁被用来实现隔离性,保证并发事务的正确性. 两段锁 & 一次封锁 两段锁 数据库遵循的是两段锁协议,将事务分成两个阶段,加锁阶段和解锁阶段(所以叫两段锁) ...

  2. Windows Server体验之升级安装

    由于Windows Server的版本是每半年更新的,而微软对于产品的支持周期又是有限的.比如Windows Server 1803的主流支持只到2019年11月12日.也就是说,最多1年半,就需要更 ...

  3. avue常用场景记录

    接手的一个项目使用的是avue这个傻瓜式的专门给后端人员用的框架,文档不够友好,使用起来各种蛋疼(咱专业前端基本上不使用).为此,专门记录一下.当前avue版本2.8.12,如果要切换avue的版本, ...

  4. day04-1群聊功能

    多用户即时通讯系统04 4.编码实现03 4.5功能实现-群聊功能实现 4.5.1思路分析 群聊的实现思路和私聊的实现非常类似. 不同的是:私聊时,服务端接收到消息后,只需要找出接收方的socket并 ...

  5. MinIO监控指南

    官方文档地址:http://docs.minio.org.cn/docs/master/minio-monitoring-guide MinIO服务器通过端点公开监视数据.监视工具可以从这些端点中选择 ...

  6. 第五章:Admin管理后台 - 3:Admin文档生成器

    Django的admindocs应用可以从模型.视图.模板标签等地方获得文档内容. 一.概览 要激活admindocs,请按下面的步骤操作: 在INSTALLED_APPS内添加django.cont ...

  7. 安装 Ubuntu 教程

    1.选择中文安装 2.****到了如下界面,我们点击继续: 3.然后点击,现在安装: 4.****到了这界面,点击继续: 5.如下,输入你的位置,随便输入就好: 6.****然后选择汉语,点击继续: ...

  8. 谣言检测(PSIN)——《Divide-and-Conquer: Post-User Interaction Network for Fake News Detection on Social Media》

    论文信息 论文标题:Divide-and-Conquer: Post-User Interaction Network for Fake News Detection on Social Media论 ...

  9. Linx__Ubuntu_APT

    apt介绍 apt是Advanced Packaging Tool的简称. 在Ubuntu下,我们可以使用apt命令进行软件包的更新,安装,删除,清理等 类似于Windows的软件管理工具. 就是Ce ...

  10. jsp页面中怎么利用a标签的href进行传递参数以及需要注意的地方

    jsp页面中: <a href="${pageContext.request.contextPath }/infoController/getProductInfo?productId ...