1.定义了一个需要两个参数的函数 def print_str(first, second): print first print second if __name__ == "__main__": print_str("hello", "world") 如果传一个参数调用,print_str("hello"),那么一定会抛出异常的: 明确告诉你需要准确的两个参数,现在只确定给了一个参数 TypeError: print_str…
Py的参数还真是多,用起来还是很方便的,这么多参数种类可见它在工程上的实用性还是非常广泛的. 挺有意思的,本文主要参照Liaoxuefeng的Python教程. #必选参数 def quadratic(a, b, c): if not isinstance(a, (int, float)) or not isinstance(b, (int, float)) or not isinstance(c, (int, float)): raise TypeError('bad operand type…
详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参大体可分必备参数.关键字参数.默认可省略参数.不定长元组参数.不定长关键字参数等,下面通过函数定义及调用上的不同情况深入解析这些中参数的不同及应用场景.   为了更好的理解不同参数的具体意义,所以下面演示代码中,使用的参数数量较多.具体是一个调用MySQL数据库配置参数的函数所需要的参数,我们用这个…
# -*- coding: utf-8 -*- #coding=utf-8 ''' @author: tomcat @license: (C) Copyright 2017-2019, Personal exclusive right. @contact: liliang07@yungengxin.com @software: coding @file: decorator.py @time: 2019/7/24 19:22 ''' ''' dict 字典参数 关键字参数在函数内部自动组装为一个…
默认参数:定义函数的时候给定变量一个默认值. def num(age=1): 位置参数:调用函数的时候根据定义函数时的形参位置和实参位置进行引用. 关键字参数:如果定义的函数中含有关键字参数,调用函数时必须要传如该关键字对应的实参. 不定长参数:在定义函数的时候不确定传入的参数的数量(可能是0个或多个) def num(*args,**args):  (不定长参数的标志符号是*和**,args和kwargs只是变量的名字,可以改为任意的变量如(*num,**kwnum)) *+变量名1,可以接受…
刚开始接触 python 的时候,对 python 中的 *wargs (可变参数) 和 **kwargs (关键字参数)的理解不是很透彻,看了一下 <Explore Python>一书,里面对这一部分的描述相对浅显易懂, 这里依据个人理解进行相关总结. 可变参数(*args) 对于可变参数可以联想到 C# 中的可变参数.可变参数是一个数量不确定的列表集合,可以是 list 类型,也可以是 tuple 类型 我们定义如下代码段: def add(*numbers): print(type(nu…
1.python中默认缺省参数----定义默认参数要牢记一点:默认参数必须指向不变对象! 1 def foo(a,b=1): 2 print a,b 3 4 foo(2) #2 1 5 foo(3,100) #2 100 定义有默认参数的函数时,默认值参数位置必须都在非默认值参数后面. 调用时提供默认值参数值时,使用提供的值,否则使用默认值. 2.Python可以根据参数名传参数 1 def foo(ip,port): 2 print "%s:%d" % (ip,port) 3 4 f…
前面第二章简单介绍了函数定义的语法,经过后面一系列的学习,函数有必要再次介绍一下相关内容. 一.    关于函数的语法 1.    语法 def 函数名([参数]): 函数文档字符串 函数体          2.    函数名:是必须符合Python名称规范要求的标识符,需要避免使用Python的关键字: 3.    参数:称为函数的形参,调用时传递的真实数据称为实参,函数的参数可以没有,也可以是多个甚至可变个数: 4.    函数文档字符串:在"Python语句的补充和修订"那节老…
函数文档 1.什么是函数文档: 就是放在函数体之前的一段说明,其本身是一段字符串,一个完整的函数需要带有函数文档,这样利于他人阅读,方便理解此函数的作用,能做什么运算 2.怎么查看函数文档: function.__doc__ 注意:不加小括号 3.例: 你可能会想,假如我不传入参数能直接打印函数文档吗? 测试一下就知道: 结果是可以的 接着想,前面说不能带小括号,我确认一下是不是真的不能带小括号呢: 果然是不行的,接着看: 有没有什么发现?总结一下: 函数的.__doc__属性里,因为函数加括号…
前言: Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数. 可变参数和关键字参数的语法: *args是可变参数,args接收的是一个tuple: **kw是关键字参数,kw接收的是一个dict. 使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法. 一.可变参数*args 定义:可变参数就是传入的参数个数是可变的,可以是0个,1个,2个,--很多个. 作用:就是可以一次给函数传很多的参数 特征:*args 我们以数…
一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_dict = {1: u'先生', 2: u'女士'} print 'hello %s %s, welcome to python world!' %(name, sex_dict.get(sex, u'先生')) # 两个参数的顺序必须一一对应,且少一个参数都不可以 # print_hello('t…
#_*_coding='utf-8' #可变参数 def person(name,age,*args): #定义了可变参数args print('传入的名字为:',name) print('传入的年龄为:',age) print('传入的可变参数为:',args) if __name__ == '__main__': person('张三',24) person('张三',24,'家庭地址是北京','爱好是唱歌') ''' 打印结果: 传入的名字为: 张三 传入的年龄为: 24 传入的可变参数为…
一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_dict = {1: u'先生', 2: u'女士'} print 'hello %s %s, welcome to python world!' %(name, sex_dict.get(sex, u'先生')) # 两个参数的顺序必须一一对应,且少一个参数都不可以 # print_hello('t…
Python函数形参 必传参数:平时最常用的,必传确定数量的参数 缺省参数:在调用函数时可以传也可以不传,如果不传将使用默认值 可变参数:可变长度参数 关键字参数:长度可变,但是需要以kv对形式传参 必填参数和缺省参数的结合 # 必填参数a,缺省参数b def test1(a, b=3): print(a, b) test1(0) test1(0, 1) 执行结果 0 3 0 1 实际的函数栗子 str.index(sub, start=None, end=None) 知识点 当同时存在必填参数…
1. global声明全局变量 #声明name这个变量为全局变量,只是写在函数里面 #写代码时,尽量不要用全局变量,会一直占用内存.       ------->{'name':'abc','sex':'29'} #字典和list,这种可变变量,不需要用global来声明,就可以直接改了 2.可变参数,参数组 #对于可变参数,非必填,没有限制参数个 name为位置参数,age为默认参数,*args为可变参数 #位置参数(必填参数),默认值参数(不必填),可变参数(不必填的,不限制参数个数) 3.…
函数重载主要是为了解决两个问题. (1)可变参数类型. (2) 可变参数个数. 另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数. 好吧,那么对于情况 (1),函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码…
1.数学意义的函数与python中的函数 数学意义的函数 y = 2*3+1 x =3 y =7 x是自变量,y是因变量 2.python中定义函数的方法 一个函数往往都是为了完成一个特定的功能而存在的,所以注释信息加上是个好习惯 def atest(x): "The function definitions" x += 1 return x def:     定义函数的关键字 atest:     函数名 ():     内可定义形参 "":    文档描述(非必…
修饰器 之前我一直有一个疑惑,就是修饰器里面对函数的操作为什么不能直接写进函数里面就好了吗?何必这么麻烦呢,当我进一步理解之后,原来修饰器的作用就是完成那些不能写进函数里面的功能的,好比必须要等到函数完成后的一些操作一样,(那么函数完成之前的工作怎么办呢?) 之前的学习笔记:https://www.cnblogs.com/Gaoqiking/p/10470407.html map/reduce 能够将函数的参数一下传进去,他能按顺序每次调用几个去自动执行完所有的 参考链接:https://www…
最近在写代码时发现一个有趣的地方,当python中的函数使用list作为默认参数且调用时不给其赋值时,无法通过在函数中将其赋值为[]来达到清空此默认参数的目的.按照道理来说,函数f1中的list为局部变量,在下次进入时,其应保持默认值才对.而且list具有可变性,在原内存地址中修改其内容. 具体代码如下: def f1(a=[2]): a.append(100) print a a=[] #del a[:] print a def f2(a=[2]): a.append(100) print a…
当我们希望函数的某些参数强制使用关键字参数时,可以将强制关键字参数放到某个*后面就能得到这种效果.比如: def recv(maxsize, *, block): """接收一条消息""" pass recv(1024, True) #错误写法会产生TypeError错误 #TypeError: recv() takes 1 positional argument but 2 were given recv(1024, block=True) #…
# 关键字参数 '''关键字参数代表传入任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict ''' def student(name,sex,**keywords): print('name:',name) print('sex:',sex) print('keywords:',keywords) student('chris','male') # name: chris # sex: male # keywords: {} # ** keywords 对应的实参需可以转换成d…
例1: #定义一个含有不定长参数的函数,本例第三个参数*args def sum_nums(a,b,*args): print('_'*30) print(a) print(b) print(args) #调用函数: sum_nums(11,22,33,44,55,66,77) sum_nums(11,22,33) sum_nums(11,22) sum_nums(11)#错误调用,传递的参数不够 #输出结果: ______________________________ 11 22 (33,…
函数:一个工具,随调随用 降级代码冗余 增加代码的复用性,提高开发效率,为了不成为cv战士 提高程序扩展性 函数有两个阶段:定义阶段,调用阶段. 定义时:只检查函数体内代码语法,不执行函数体内代码. 函数参数: 参数分形参.实参 形参:函数定义时括号内的参数 实参:函数调用时括号内的参数 形参相当于变量,实参相当于变量的值. 定义时: def func(a, b, c): pass a, b, c为形参 调用时: func(1, 2, 3) 1, 2, 3 为实参 形参: 只在被调用时,才分配内…
1.位置参数:调用函数的时候传的参数,参数默认按顺序赋值,如果是指定那个参数赋值,不关注顺序.指定参数a=1,b=2 就在函数体内a=1,b=2 2.默认参数:在定义函数的时候,给某个参数设置默认值 3.动态参数:*args 调用函数是可以传入任意个参数或者不传,传递到函数内部会把这些函数存入到一个元组 4.关键字参数:**kwargs 参数传递进去后变成一个字典类型存储 4.一个函数有位置参数,默认参数时位置参数必须在默认参数前面…
引言: 在Python中可以缺省给方法制定缺省值,但是这个缺省值在某些情况下确是和我们预期不太一致的-... 这个诡异的问题,曾经困然了我几天时间,才最终定位出来-.. 测试代码 from datetime import datetime import time def test(curdate=datetime.now()): print("The current Time:%s" % curdate.strftime("%Y-%m-%d %H:%M:%S"))…
引子:对于关键字参数,调用时可以传入任意个不受限制的关键字参数,至于到底传入了哪些,就需要在函数内部通过[函数里定义的关键字参数]检查,例子里就是通过otherinfo检查.        >>> def person(name,age,**otherinfo):        ...     print('name:',name,'age:',age,'Other infomations:',otherinfo)        ...    例如,我们希望检查是否包含sex和city参…
python 版本 3.5 #Author by Andy#_*_ coding:utf-8 _*_def func(x,y=2): print('我是形参%s'%x) print('我是默认参y--->%s'%y)func(1)#1是实参,x为形参,y为默认参数#若实参数目不固定def func1(*args): print(args)func1([1,2.3,4,5])#([1, 2.3, 4, 5],)func1(*[1,2,3,4,5])#(1, 2, 3, 4, 5)#实参为字典 **…
首先,我们需要知道在python中哪些是可变数据类型,哪些是不可变数据类型.可变数据类型:列表list和字典dict:不可变数据类型:整型int.浮点型float.字符串型string和元组tuple. 用一句话来概括上述过程就是:“python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象:可变数据类型,允许变量的值发生变化,即如果对变量进行append.+…
python中的不可变类型的全局变量如int  a=1,str  b='hello', 若需要修改必须加global申明, 而全局变量是可变类型的,如list, dict ,则直接修改list.append(),dict[x]=xx, 无需申明. 若全局变量与局部变量同名, 采用就近原则. c=[1,2,3,4,5] d=2 e='HELLO' f={'name':'xx','age':18} class A: b=[1,2,3] d=222 def hehe(self): self.b.app…
1.python中的可变类型和不可变类型 python中的数据类型大致可分为6类:1.Number(数字) 2. String(字符串) 3. Tuple (元组) 4. List(列表) 5. Dictionary (字典) 6. Sets(集合) (bool布尔类型.int整型.float浮点型.complex复数等都归为Number数字类型) 这6种数据类型中不可变类型为number.string.tuple,可变类型为:list.dict.set 不可变类型:不可变类型的变量在第一次赋值…