python之路之函数02
一 函数的参数:
我们把函数的参数分为形式参数和实际参数,简称形参和实参。
形参:在定义函数时,函数名括号内定义的参数。
实参:在调用函数时,函数名括号内需要用户传入的值。
注意:
实参值(相当于变量的值)与形参(变量名)的绑定关系只在函数调用时才会生效,在函数调用结束后接触绑定关系。
二 那么我们所学的函数参数有:位置形参与默认形参,位置实参与关键字实参。
位置形参:
def foo(x,y,z)
print(x,y,z,) 那么在foo后面的就叫做位置形参,调用函数时必须为其传值,多一个不行,少一个也不行。
同样的位置形参必须放到默认形参的前面。
对于经常需要变化的值,需要将对应的形参定义成位置形参。
位置实参:
def foo(x,y,z)
print(x,y,z,) foo(1,2,3)
那么(1,2,3)就是我们说说的实参,它与位置形参是一一对应的关系。
关键字参数:
关键字参数也是实参的一种。它是以key-value的形式作为实参,也就是说他相当于直接跟形参的变量进行一对一进行传值的,可以不用像位置实参那样按照位置形参的位置顺序。
# def func(x,y,z):
# print(x,y,z)
#
# # func(,z=,y=,)# 位置实参必须放到关键字实参前面
# func(y=,x=,z=)# 关键字实参可以不按顺序
#func(1,x=1,y=2,z=1)# b不能为一个位置形参重复传值
# def register(name,age,sex='fenale'):
# print(name,age,sex)
默认参数:
默认参数同样作为形参,它主要用在大多数都一样的值,需要将形参默认成为一个值,在我们需要改变的那一小部分再对其进行传值。
def register(name,age,sex=female)
print(name,age,sex)
# register('egon',,)#当用户没有传值时默认为。
# register('egon', ,'male')#当用户传入值时,则按照用户所传值
同样的位置形参必须放到默认形参的前面
默认的参数的值只在定义阶段赋值一次,也就是说默认参数的值在定义阶段就固定死了,不会因为再在函数子代码中再次赋值而改变。
def register(name,age,sex='female'):
# print(name,age,sex)
#
# sex='male'
# register('egon',,)#输出结果为female,也就是说默认形参在定义阶段就被固定了,在运行阶段不能再改变。
默认参数的值应该设为不可变类型:
# def register(name, age, l=[]):#将默认参数设成可变类型列表
# l.append(age)
# print(name, age, l)
#
# register('egon',,)
# register('alxe',,)
# register('eg',,)结果就是每输出一次那么上一次的结果会加到下一次中来。结果为:eg [14,13,123] # def register(name, age, l=None): # print(name, age, l)
# register('egon',,)
# register('alxe',,)
三 可变参数:
*args会将溢出的位置实参的值全部接收,然后保存成元组传给args
def func(x,y,z,*args)
print(x,y,z,)
print(ars) func(,,,,,,,) 那么输出的结果就是: (,,,,)
。
那么一旦实参中碰到*,就要把该实参的值打散。
def foo(x,y,z,a,*args):#这种情况下溢出的实参以元祖的形式赋值给args
# print(x,y,z,a)
# print(args)
#
# foo(,,,,,*[,,,,])
# foo(,,,,,*(,,,,))
# foo(,,,,,*'hello')#将’hello‘打散。
输出结果为:
1 2 3 4
(5, 1, 2, 3, 4)
1 2 3 4
(5, 1, 2, 3, 4)
1 2 3 4
(5, 'h', 'e', 'l', 'l', 'o')
2 1 1 2
2 **kwargs会将溢出的关键字实参全部接收,然后保存成字典传给kwargs:
def foo(x,y,z,a,**kwargs):#将溢出的关键字实参以key_value的形式存在
# print(x,y,z,a)
# print(kwargs)
# #
# foo(x=,y=,z=,a=,b=,) 输出的结果为:
{‘b’:}
**kwargs那么在关键字实参中将字典打散成key=value的形式。
def foo(x,y,z,a,**kwargs):#将溢出的关键字实参以key_value字典的形式存在
print(x,y,z,a)
# print(kwargs)
#
foo(x=,y=,**{'z':,'a':})#双星号在实参中将字典中打散,打散成key=value的形式。
python之路之函数02的更多相关文章
- Python之路 day3 函数定义 *args及**kwargs
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa import time # def logger(): # time_format ...
- 小白的Python之路 day3 函数
1.函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 1 2 ...
- python之路——初识函数
阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...
- python之路(九)-函数装饰器
装饰器 某公司的基础业务平台如下: def f1(): print('这是f1业务平台') def f2(): print('这是f2业务平台') def f3(): print('这是f3业务平台' ...
- python之路之函数03
一 首先我们学到函数的嵌套调用与定义:1 函数嵌套 # def f1(): # print(f1)#我们这里如果输入f1那么输出的则是f1这个变量(函数)所在的地址.如果输入一个字符的话那么就直接输出 ...
- python 之路之函数01
一 函数 1 那么要想学习函数,我们首先应该知道函数是什么? 我们这里所说的函数与数学中的函数是不同的概念,在这里我们可以把函数看成我们写代码过程中需要用到的工具. 2 那么这个‘工具’有什么 ...
- python之路--初识函数
一 . 函数 什么是函数 f(x) = x + 1 y = x + 1 # 函数是对功能或者动作的封装 函数的语法 def 函数名(): 函数体 调用: 函数名() def play(): print ...
- python之路_函数实例及装饰器介绍
一.习题讲解 1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组.例如:[(‘红心’,2), (‘草花’,2), …(‘黑桃,‘A’)] def cards(): num=[] for v ...
- Python之路----生成器函数进阶
def generator(): print(123) yield 1 print(456) yield 2 g = generator() ret = g.__next__() print('*** ...
随机推荐
- Learning from delayed reward (Q-Learning的提出) (Watkins博士毕业论文)(建立了现在的reinforcement Learning模型)
最近在在学习强化学习方面的东西, 对于现有的很多文章中关于强化学习的知识很是不理解,很多都是一个公式套一个公式,也没有什么太多的解释,感觉像是在看天书一般,经过了较长时间的挣扎最后决定从一些基础的东西 ...
- Buildroot Qt 5
/********************************************************************************* * Buildroot Qt 5 ...
- 配置海康相机SDK文件
前言 项目使用到海康摄像机,进行二次开发需要首先对SDK文件进行相关配置. 实现过程 1.下载SDK开发包: 网址:http://www.hikvision.com/cn/download_61.ht ...
- PHP CURL HTTPS内存泄露问题
还原场景:通过一直运行脚本,向微信用户发送模板消息,发现运行了一段时间,内存就爆了,然后立马看了一下代码,发现跟其他的消息逻辑一模一样,唯一不一样的就是请求了微信的接口:然后继续开始找问题,发现当时使 ...
- 大家一起做训练 第一场 B Tournament
题目来源:CodeForce #27 B 有n个人比赛,两两之间都有一场比赛,一共 n * (n - 1) / 2 场比赛.每场比赛的记录方式是 a b,表示在a和b的比赛中,a胜出,b失败. 经过研 ...
- 【poj3169】【差分约束+spfa】
题目链接http://poj.org/problem?id=3169 题目大意: 一些牛按序号排成一条直线. 有两种要求,A和B距离不得超过X,还有一种是C和D距离不得少于Y,问可能的最大距离.如果没 ...
- mac上textstudio在系统升级以后不能编译
不能工作的最主要原因为:os x改变了文件存放的路径.因此,需要修改setting中的command的路径,将原来的改为: /usr/local/texlive/2015/bin/x86_64-dar ...
- spket插件的安装与使用完整图文版
下载最新破解版的spket1.6.18(见下面附件) 对于目前的MyEclipse的插件安装是很简单的,把spket1.6.18破解版.zip解压后直接复制到MyEclipse安装目录的dropins ...
- log4j的格式化打印
log4j.properties的文件内容如下 log4j.rootLogger=INFO, stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleA ...
- Oracle GI 日志收集工具 - TFA 简介
转载自:https://blogs.oracle.com/Database4CN/entry/tfa_collector_%E4%BB%8B%E7%BB%8D 1.TFA的目的: TFA是个11.2版 ...