今日内容:

一、函数参数

  • 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"})

Python 入门基础9 --函数基础2 实参与形参的更多相关文章

  1. Python入门篇-生成器函数

    Python入门篇-生成器函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.生成器概述 1>.生成器generator 生成器指的是生成器对象,可以由生成器表达式得到, ...

  2. Python入门篇-匿名函数

    Python入门篇-匿名函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.匿名函数概述 1>.什么是匿名函数 匿名,即没有名字 匿名函数,即没有名字的函数 2>. ...

  3. python之旅:函数基础

    一.引子 1.函数是什么 用函数与不用函数 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一 ...

  4. Python入门-内置函数一

    什么是内置函数?就是python给你提供的拿来直接用的函数,比如print,input等等,截止到python版本3.6.2 python一共提供了68个内置函数,他们就是python直接提供给我们的 ...

  5. python中函数定义之实参、形参

    一般在函数的定义中,会有一类变量---形参,它是函数完成其工作的一项信息.实参往往是调用函数时传递给函数的信息.我们在调用函数时,将要让函数使用的信息放在括号内.例如定义一个函数def greet_u ...

  6. python3基础(七)函数基础

    Function 函数是一段组织好的能够实现特定功能或者逻辑的代码块,函数代码在文件执行时读入内存并不执行,在调用函数时执行,简单来说是把一段代码封装给一个函数名(可以用变量的概念去理解,即把一段代码 ...

  7. Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器

    今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...

  8. Python 入门基础11 --函数基础4 迭代器、生成器、枚举类型

    今日目录: 1.迭代器 2.可迭代对象 3.迭代器对象 4.for循环迭代器 5.生成器 6.枚举对象 一.迭代器: 循环反馈的容器(集合类型) 每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的 ...

  9. Python 入门基础12 --函数基础5 匿名函数、内置函数

    今日内容: 1.三元表达式 2.列表.元组生成式 | 字典生成式 3.递归 4.匿名函数 5.内置函数 一.三元表达式 三元运算符:就是 if...else... 语法糖 前提:if 和 else # ...

随机推荐

  1. c# winform调用摄像头识别二维码

    首先我们需要引用两个第三方组件:AForge和zxing. Aforge是摄像头操作组件,zxing是二维码识别组件.都是开源项目.避免重复造轮子. 其实一些操作代码我也是参照别人的,若侵犯您的版权, ...

  2. X86主要的几种寻址方式

    一.首先 P33: 严格来说有三种寻址方式 与数据有关的寻址方式 与转移指令或过程调用指令有关的寻址方式 与IO指令有关的寻址方式 这篇博客只讲1.2两条 二.然后 1. 与数据有关的寻址方式 数据, ...

  3. 剑指offer:包含min函数的栈

    题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 解题思路: 相当与在保留原栈的同时,去维护一个最小栈.利用一个辅助栈来完成.对于每个 ...

  4. Eclipse导入包提示Setting build path has encountered a problem

    Eclipse无法导入jar包时, 提示:“Setting build path” has encountered a problem,Could not write file D:\\workspa ...

  5. ubuntu 12.04下 eclipse的安装

    1首先下载有关的JDK sudo apt-get install openjdk-7-jre 由于是源内的东西,所以只许执行上面这一步,就自动帮你下载 安装 以及配置,无需繁琐的操作. 这里ubunt ...

  6. Alpha版本事后诸葛亮

    目录 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结: 本小组和其他组的评分 分工和贡献分 全组讨论的照片 问题 第一组提问回答:爸爸饿了队 第二组提问回答:拖 ...

  7. C语言和go语言之间的交互 - C语言中使用go语言,使用的go语言又使用了c语言

    一.go语言中使用C语言 go代码中使用C代码,在go语言的函数块中,以注释的方式写入C代码,然后紧跟import “C” 即可在go代码中使用C函数 代码示例: go代码:testC.go 1 pa ...

  8. DHCP全局配置文件解析

    作用 参数 ddns-update-style  类型 定义DNS服务动态更新的类型,类型包括:none(不支持动态更新), interim (互动更新模式)与ad-hoc(特殊更新模式) allow ...

  9. FINAL视频预发布

    视频地址:http://v.youku.com/v_show/id_XMTg0MjMzNDIwNA==.html?spm=a2hzp.8253869.0.0&from=y1.7-2

  10. python 十进制整数转换为任意进制(36以内)

    def baseN(num, b): return ((num == 0) and "0") or (baseN(num // b, b).lstrip("0" ...