python函数调用的五种方式
第一种:参数按顺序从第一个参数往后排#标准调用
# -*- coding: UTF-8 -*-
def normal_invoke(x, y): print "--normal_invoke:--" print "x is %d" %x print "y is %d" %y
#标准调用
normal_invoke(1, 2)
运行结果:
--normal_invoke:--
x is 1
y is 2
第二种:#关键字调用
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def keyword_invoke(x, y): print "--keyword_invoke--:" print "x is %d" % x print "y is %d" % y
#关键字调用
keyword_invoke(y=1, x=2)
注意:关键调用从哪开始的,从哪以后都必须使用关键字调用除了*
收集参数。不能写成这样的:keyword_invoke(y=1, 2)
,这样就会报错。
运行结果:
--keyword_invoke--:
x is 2
y is 1
第三种:#非关键字可变长参数(tuple) def normal_tuple_invoke(x, y=2, *values):
print "--normal_tuple_invoke--" print "x is %d" % x print "y is %d" % y for value in values: print "tuple's value has", value#非关键字可变长参数(tuple) normal_tuple_invoke(1, 3, 'xyz', 123.4)
注意:收集参数 *
当你参数不确定有多少是你可是使用它,他会把不确定的部分存在values元组中,当然这个元组名字要看*
后面跟的是啥了。
运行结果:
--normal_tuple_invoke--
x is 1
y is 3
tuple's value has xyz
tuple's value has 123.4
第四种:#关键字可变长参数(dict)
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def keyword_dict_invoke(x, y=2, **value_dict): print "--keyword_dict_invoke--" print "x is %d" % x print "y is %d" % y for key in value_dict: print "key is ", key print "value is ", value_dict[key] #关键字可变长参数(dict) keyword_dict_invoke(y=1, x=2, arg2='def', arg1='put at the last')
注意:**value_dict
传回来的参数以字典:key-value
的形式存放,单招顺序首先传回来的是:key,其次是:value。
运行结果:
--keyword_dict_invoke--
x is 2
y is 1
key is arg1
value is put at the last
key is arg2
value is def Process finished with exit code 0
第五种:还有一种是以整个函数为参数传回来,目前我知道是装饰器在使用
装饰器实际上就是为了给某程序增添功能,但该程序已经上线或已经被使用,那么就不能大批量的修改源代码,这样是不科学的也是不现实的,因为就产生了装饰器,使得其满足:
- 不能修改被装饰的函数的源代码
- 不能修改被装饰的函数的调用方式
- 满足1、2的情况下给程序增添功能
那么根据需求,同时满足了这三点原则,这才是我们的目的。因为,下面我们从解决这三点原则入手来理解装饰器。
等等,我要在需求之前先说装饰器的原则组成:
< 函数+实参高阶函数+返回值高阶函数+嵌套函数+语法糖 = 装饰器 >
这个式子是贯穿装饰器的灵魂所在!
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
improt timedef test():time.sleep(2)print("test is running!")def deco(func): start = time.time()func() #2stop = time.time()print(stop-start)deco(test) #1
我们来看一下这段代码,在#1处,我们把test当作实参传递给形参func,即func=test。注意,这里传递的是地址,也就是此时func也指向了之前test所定义的那个函数体,可以说在deco()内部,func就是test。在#2处,把函数名后面加上括号,就是对函数的调用(执行它)。因此,这段代码运行结果是:
test is running!
the run time is 3.0009405612945557
python函数调用的五种方式相关推荐
- python函数调用的三种方式_python函数调用的四种方式
原标题:python函数调用的四种方式 第一种:参数按顺序从第一个参数往后排#标准调用 运行结果: 第二种:#关键字调用 注意:关键调用从哪开始的,从哪以后都必须使用关键字调用除了'*'收集参数.不能 ...
- python函数调用的三种方式_判断python对象是否可调用的三种方式及其区别
基本上判断python对象是否为可调用的函数,有三种方法: 1.使用内置的callable函数 callable(func) 用于检查对象是否可调用,返回True也可能调用失败,但是返回False一定 ...
- 下列哪个不是目前python里的内置模块-python引入模块的五种方式与内置模块
模块导入的五种方式 1.import 模块名 2.from 模块名 import 方法名 3.from 模块名 import * 4.import 模块名 as 别名 5.from 模块名 impor ...
- python引入模块的五种方式与内置模块
模块 自定义模块 模块的定义与分类 模块的定义 简而言之,模块就是一些常用功能的集合,我们把一些常用的函数.变量或者方法写到一个python文件中,那么这个python文件就是模块,使用模块可以避免我 ...
- java clone方法_干货满满:Java中创建对象的五种方式详解
通常来说,对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为. 作为Java开发者,我们通常都是使用依赖管理系统,比如Spring去创建Java对象,但使用管理系统创建对象并不是唯一 ...
- Github项目解析(九)--实现Activity跳转动画的五种方式
2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请标明出处:一片枫叶的专栏 上一篇文章中我们讲解了在Activity ...
- 基础知识:编程语言介绍、Python介绍、Python解释器安装、运行Python解释器的两种方式、变量、数据类型基本使用
阅读目录 今日学习内容: 1.编程语言的介绍 2.Python介绍 3.安装Python解释器(多版本共存) 4.运行Python解释器程序两种方式.(交互式与命令行式)(♥♥♥♥♥) 5.变量(♥♥ ...
- python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比
[Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...
- 五种方式让你在java中读取properties文件内容不再是难题
2019独角兽企业重金招聘Python工程师标准>>> 方式1.通过context:property-placeholder加载配置文件jdbc.properties中的内容 < ...
- java 给对象创建实例_Java中创建(实例化)对象的五种方式
Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...
最新文章
- Linux系统程序运行时加载动态库路径顺序
- RabbitMQ ——“Hello World”
- IO流基础,创建File对象与方法是用
- vs2012创建Windows服务
- How to check if one event is cancel event - #Exit#
- C#.Net工作笔记004---visual studio中的小技巧提高开发效率_随时更新
- 使用ArcGIS软件进行投影变换和坐标校正
- Java中类和对象的区别
- 漂浮式半潜风机(二)环境荷载
- Image MagicK 常用命令
- mysql数据库是什么语言_mysql是一种程序设计语言吗?
- 第三章 决策树-隐形眼镜
- 一个教训:养成良好的编程习惯的重要性
- 鄙人从事IT业已经有9年时间,少壮不努力,长大搞IT
- 树莓派python3的opencv下载(编译失败第六步必看)
- Tomcat工作原理详解
- 线上微课堂:信号与系统
- Http meta详解
- c语言中黑色的鼠标变宽,大师解答win7系统鼠标光标变成黑色方块了的设置方案....
- python画图,中文字体乱码,设置plt.rcParams不成功时