必须参数

最常见的传参

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. .env[mode]文件中如何添加注释

    前言 Vue-Cli 允许我们在项目根目录创建.env.[mode]文件来设置一些打包编译的启动参数,通过执行脚本的时候加mode参数,指定不同环境需要加载的配置文件 形如: .env.prod NO ...

  2. LVGL 模拟仿真(Windows+CodeBlocks)

    一.准备材料 Code Blocks官网:https://www.codeblocks.org/ Code Blocks 汉化包:链接: https://pan.baidu.com/s/12zB5bD ...

  3. innodb_flush_log_at_trx_commit 和 sync_binlog 参数详 解

    "innodb_flush_log_at_trx_commit"和"sync_binlog"两个参数是控制 MySQL 磁盘写入策略以及数据安全性的关键参数.当 ...

  4. 使用Jumpserver堡垒机管理MySQL应用

    第一步,添加系统用户 资产管理,系统用户,创建<数据库协议>MySQL 用户名和密码填写实际可以访问数据库的用户名和密码 第二步,添加应用 应用管理,数据库 主机和端口填写可以访问数据库的 ...

  5. aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE

    网络上大家分享的 aardio + Python 混合开发的文章很多,不得不说 aardio 与 Python 混合开发是真的简单 !  快速入门 推荐几个快速上手教程:< aardio + P ...

  6. Node.js(二)express

    npm init -y(初始化项目) npm install express(引入express) npx express-generator -e(自动生成模板.添加对 ejs 模板引擎的支持) a ...

  7. R及R Studio下载安装教程(超详细)

    R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析.绘图.数据挖掘. 如果你是一个计算机程序的初学者并且急切地想了解计算机的通用编程,R 语言不是一个很理想的选择,可以选择 Pytho ...

  8. Linux、Windows下Redis的安装即Redis的基本使用详解

    前言 什么是Redis Redis是一个基于内存的key-value结构数据库.Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母 ...

  9. Oracle注入

    Oracle 查询出所有的表 select * from all_tables 查询出当前用户的表 select * from user_tables 查询出所有的字段 select*from all ...

  10. linux安装达梦数据库8

    PS.本次测试只是为了项目需要,但是在部署和启动程序的时候发生了一系列的报错,由此记录下来为日后作参考 安装达梦数据库 1. 达梦数据库(DM8)简介 达梦数据库管理系统是武汉达梦公司推出的具有完全自 ...