今日内容:

一、函数参数

  • 1.形参与实参定义
  • 2.实参分类
  • 3.形参分类
  • 4.可变参数的整体使用

一、形参与实参定义

def fn(参数们):pass
1.1 形参
定义函数,在括号内声明的变量名,用来接外面传来的值
1.2 实参
调用函数,在括号内传入的实际值,值可以为常量,变量,表达式或三者的组合
注:1.形参随着函数的调用而产生,随函数调用结束而销毁(有特例)2.在函数的外部不能直接使用函数的形参,原因:函数调用结束后,形参会被销毁3.外部产生了的变量,内部可以使用4.在函数调用()中出现的参数(外界实际存在的值):实参5.调用函数时,实参可以有常量,变量,表达式或三种的组合

二、实参分类

2.1 位置参数
不用明确形参名的传参方式,一定按照位置给形参(必须按照顺序)def fn1(a, b, c):print(a, b, c)# 位置实参:必须按照顺序
fn1(10, 20, 30)
fn1(30, 20, 10)
2.2 关键字参数
必须明确形参的名字和为形参传值,可以不按照位置(可以不按顺序传递,形参按名字取值)def fn1(a, b, c):print(a, b, c)
# 关键字传参:可以不按照顺序传递,形参按名字取值
fn1(a=10,b=20,c=30)
fn1(c=30,b=20,a=10)
2.3 二者混用
1.关键字实参必须出现在位置实参之后
2.多个位置实参按位置传参
3.关键字形参从关键字实参处拿值,可以不用按照指定顺序# 两者混用:关键字实参必须出现在位置实参之后
def fn2(a, b, c, d, e, f):print(a, b, c, d, e, f)fn2(10, 20, 30, e=100, f=500, d=200)ps: 实参的作用:为形参传递值

三、形参分类

3.1 位置形参:
可以由位置实参或关键字实参来传值# 位置形参
def fn3(a,b,c):print(a,b,c)
fn3(1,2,3)
3.2 默认形参:
具有默认值,用 '=' 进行赋值,可以是 位置实参与关键字实参,还可以不传值(采用默认值)# 默认形参具有默认值,用 = 进行赋值
def fn4(a=10,b=20):print(a,b)# 默认形参可以由 位置实参 与 关键字实参 来传值,还可以不用传值
fn4(20,30)
fn4(a=200,b=300)
fn4(100)
fn4(b = 100)
3.3 可变长位置形参:
只能由位置实参来传值# 可变长形参只能由 位置实参 来传值
def fn6(a,b,*args):print(a,b)print(args)
fn6(1,20,30,40,50)
3.4 无初值关键字形参:
必须由关键字实参来传值,出现在 * 后的都是关键字形参
def fn7(a,b,*,c,d):print(a,b)print(c,d)
fn7(1,20,c=30,d=40)
3.5 有初值关键字形参:
可以由关键字实参来传值,也可以不传值def fn8(a,b,*,c=10,d=20):print(a,b)print(c,d)
fn8(1,20)  # 有初值关键字形参,不传参数,则输出默认值
3.6 可变长关键字形参:
与无初值关键字形参类似,同样需要传值def fn(*, a, b=20, c, **kwargs):print(a, b)print(kwargs)
fn(d=40, e=50, a=10, c=30)  # 以关键字形式传入实参,输出 字典类型
注:1.各种形参出现的先后 :位置形参 - 默认形参 - 可变长位置形参 - 无 | 有初值关键字形参 - 可变长关键字参数2.可变长形参会以元组形式接收位置形参与默认形参未接收完的所有传入的位置实参3.可变长关键字形参:用来接收被没有被关键字形参接收玩的关键字形参,也只能由关键字实参来传值,用字典来存放数据ps:可变长形参只能接收位置实参的值,位置实参还必须在关键字实参前,导致默认形参只能由位置实参来传值重点:可变长位置形参整体赋值

四、可变参数的整体使用

# 可变长位置形参整体赋值
def fn7(*args):print(args)fn7(1,2,3,4,5,6)# 单列集合(保护字符串)将该变量进行 打散 传值
# 打散
def fn8(*args):print(args)
ls = [1,2,3,4,5]
fn8(ls)  # ([1, 2, 3, 4, 5],)
fn8(*ls)
# 将ls 打散为1,2,3,4,5 再传值 => (1,2,3,4,5,)
# 可以理解为,将数组的所有值全部赋值给形参# ---关键字形参------------# 整体赋值
dic = {'name': 'Owen', 'age': 18}
def fn1(**kwargs):print(kwargs)
fn1(**dic)dd = {'k1': [1, 2, 3, 4, 5],'k2': {"name":"Bob"}
}
fn1(**dd)def fn2(*args):print(args)
ll = [1, [1, 2], {"name":"Bob"}]
fn2(*ll)  # (1, [1, 2], {"name":"Bob"})

转载于:https://www.cnblogs.com/xt12321/p/10624076.html

Python 函数基础2 实参与形参相关推荐

  1. python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...

    原标题:新手上路必学的Python函数基础知识,全在这里了(多段代码举例) 导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写 ...

  2. Python函数基础教程-张明阳-专题视频课程

    Python函数基础教程-730人已学习 课程介绍         通过本次课程的讲解,可以让大家对Python函数章节中的装饰器.闭包.函数对象.迭代器和生成器进行彻底的了解,在授课的过程中,将会结 ...

  3. Python函数基础练习

    Python函数基础练习 1. 输入一行字符,统计其中有多少个单词,每两个单词之间以空格隔开,并将输入字符按首字母大写居中,每个单词首字母大写左对齐,全小写,全大写右对齐的方式分别输出.如输入: Th ...

  4. python函数调用时的实参和形参之间传递_python 函数(实参与形参、传递参数)...

    函数 什么是函数?函数是带名字的代码块,用于完成具体的工作.写出一个函数后,就可以一直调用. 定义函数,函数的基本组成: 1.1 向函数传递参数 向函数中传递任意参数,这样打印出的结果就可以根据自己的 ...

  5. python函数基础

    函数基础 函数的作用 函数就是包裹一部分的代码,实现某一个功能,达成某一个目的,而且当这段代码如果使用或者重复使用的时候,只需要很简单的调用即可,大大减少了代码的维护难度. 函数的特点 可以反复调用, ...

  6. Python 函数基础与进阶 闭包 聚合与打散

    阅读目录 函数基础 基础知识 return 返回值 不可变类型和可变类型的值传递问题 函数的参数 打散和聚合 函数进阶 函数的注释 命名空间 作用域和全局变量 函数的嵌套和作用域链 函数名 闭包 函数 ...

  7. 第三章 Python函数基础及进阶

    第三章 函数基础及进阶 3.1 上章补充内容 3.1.1 Bytes类型 计算机的数据需要存到硬盘上,但是硬盘只能存储二进制的数据. 我们知道将计算机里的数据转换成我们能看懂的数据是将二进制 -> ...

  8. 【RF基础】RF调用python函数基础

    文章目录 构建 运行 本文简单介绍了如何在robot里面调用一个python写的函数. 构建 我们在D盘下创建两个文件,一个叫pyfile.py,用于编写python函数,另外一个叫test.txt, ...

  9. robotframework调用python类方法_【RF基础】RF调用Python函数基础

    本文简单介绍了如何在robot里面调用一个python写的函数. 构建 我们在D盘下创建两个文件,一个叫pyfile.py,用于编写python函数,另外一个叫test.txt,编写我们的测试用例. ...

最新文章

  1. 为什么c语言编译器闪屏,C语言贪吃蛇闪屏问题,求大神!!!
  2. 德国蓝皮书:解决特定问题 德国渐进建设智慧城市
  3. 2019北邮计算机考研大纲,2019年北京邮电大学802电子电路考研大纲
  4. python渲染html 库_在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
  5. java+long是什么_Java中long的模运算符是什么? - java
  6. 那些相似的CRM之间究竟有无区别
  7. python中怎么比较两个列表的大小_python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法...
  8. Python实现局域网内屏幕广播的技术要点分析
  9. 从简单的 XSS 到完整的 Google Cloud Shell 实例接管,值5000美元
  10. 无法向会话状态服务器发出回话状态请求
  11. 【python简洁之道】-----2.导入模块顺序(规范/风格)
  12. 智能家居APP原型设计(附下载链接)—基于物联网的终端设备设计研究—Axure9高保真原型设计
  13. c free 语言随机抽签,javascript随机抽签程序详解
  14. Linux为sh脚本文件添加执行权限
  15. matlab 相位谱是直线,matlab幅度谱和相位谱
  16. 如何构建VoIP来是实现电话诈骗之——Asterisk的设置
  17. CentOS7L2TP/IPSec
  18. 2012最新网络电台mms地址
  19. 人工智能的概述和入门基础
  20. 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇(逻辑+博弈) B

热门文章

  1. MySQL5.7新特性——在线收缩undo表空间 (转载)
  2. 【知识小课堂】mongodb 之 特殊集合及索引
  3. android 弹出PopupWindow后背景逐渐变暗
  4. android 对话框
  5. 为什么vue前端项目要使用nodejs
  6. API网关—Spring Cloud Zuul
  7. 学习Java 采取令牌的方式避免重复提交
  8. python3的print函数
  9. 更改Mysql数据库存储位置的具体步骤
  10. [JDK]找不到或无法加载主类 java