老齐python-基础9(函数)
继续上篇
函数
多参数:
>>> def foo(x,y,z,*args,**kargs):
... print(x)
... print(y)
... print(z)
... print(args)
... print(kargs)
...
>>> foo('qiwsir',2,"python") #多参数各种类型调用适用各种场景
qiwsir
2
python
()
{}
>>> foo(1,2,3,4,5)
1
2
3
(4, 5)
{}
>>> foo(1,2,3,4,5,name="qiwsir")
1
2
3
(4, 5)
{'name': 'qiwsir'}
2、函数对象
递归
传递函数
>>> def bar():
... print("I am in bar()")
...
>>> def foo(func): #使用func传递函数
... func()
...
>>> foo(bar)
I am in bar()
def power_seq(func,seq):
return [func(i) for i in seq] def pingfang(x):
return str(x) #return x ** 2求平方 if __name__ == "__main__":
num_seq = [111,3.14,2.91]
r = power_seq(pingfang, num_seq)
print(num_seq)
print(r)
嵌套函数
def foo():
def bar():
print("bar() is running")
bar()
print("foo() is running") print(foo())
>>> def foo():
... a = 1
... def bar():
... b = a + 1
... print("b=",b)
... bar()
... print("a=",a)
...
>>> foo()
b= 2
a= 1
>>> def foo(): #另外一种定义方法就会出错Python解析器认定该变量应在bar()内部建立,而不是引用外部对象,所以报错
... a = 1
... def bar():
... a = a + 1
... print("bar()a=",a)
... bar()
... print("foo()a=",a)
...
>>> foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in foo
File "<stdin>", line 4, in bar
UnboundLocalError: local variable 'a' referenced before assignment
使用nonlocal解决!
>>> def foo():
... a = 1
... def bar():
... nonlocal a
... a = a + 1
... print("bar()a=",a)
... bar()
... print("foo()a=",a)
...
>>> foo()
bar()a= 2
foo()a= 2
闭包
#!/usr/bin/env python3
# encoding: utf-8 """
@version: ??
@author: tajzhang
@license: Apache Licence
@file: zhongli.py
@time: 2018/2/28 15:50
""" def weight(g):
def cal_mg(m):
return m * g
return cal_mg w = weight(10) #函数对象多层引用,动态函数对象,闭包
mg = w(10)
print(mg) g0 = 9.78046
w0 = weight(g0)
mg0 = w0(10)
print(mg0)
老齐python-基础9(函数)的更多相关文章
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- python基础——返回函数
python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...
- python基础——sorted()函数
python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
- python基础——匿名函数及递归函数
python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...
- 八. Python基础(8)--函数
八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x): ' ...
- python基础之函数详解
Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...
- Day3 - Python基础3 函数、递归、内置函数
Python之路,Day3 - Python基础3 本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...
- 第七篇 python基础之函数,递归,内置函数
一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...
- Python学习笔记(一)python基础与函数
1.python基础 1.1输入与输出 输出 用print加上字符串,就可以打印指定的文字或数字 >>> print 'hello, world' hello, world > ...
随机推荐
- IOS-pch文件配置
--到Xcode7都可以这么解决.亲测. 发现一个好东西.就是这个.pch文件.我的理解是他里面存放了我们在各个controller里面需要的头文件,那这样一来,就免去了在不同的ViewControl ...
- jps、jstack、jmap、jhat、jstat、hprof使用详解
https://my.oschina.net/feichexia/blog/196575#comment-list A. jps(Java Virtual Machine Process Status ...
- laravel中composer镜像服务的方式
系统全局配置:即将配置信息添加到Composer的全局配置文件config.json中. 单个项目配置:将配置信息添加到某个项目的composer.json文件中. 例1:修改Composer的全局配 ...
- Hibernate常见配置详细解释
<!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式--> <?xml version='1. ...
- 构建Uber端到端技术栈的十条经验(转载)
好文章就得分享: 一.SOA 系统设计包括若干个层面.先说顶层的系统设计原则,如 REST.SOA.由于 Uber 之前一直算一个创业公司,所以开发速度至关重要,由于微服务能够极大地促进不同组件的平行 ...
- C++ writestring 为什么不能写进中文 CStdioFile向无法向文本中写入中文【二】
本地化设置需要具备三个条件:a. 语言代码 (Language Code)b. 国家代码 (Country Code) c. 编码(Encoding)本地名字可以用下面这些部分来构造:语言代码_国家代 ...
- [AirFlow]AirFlow使用指南二 DAG定义文件
1. Example """ Code that goes along with the Airflow tutorial located at: https://git ...
- React-Native进阶_4.底部标签栏TabBar
原生项目中,我们对底部Tab 很熟悉,点击Tab标签可以切换页面,那么在React-Native 中我们该怎么实现呢. 在查了文档后,我们找到了一个TabBarIos ,这个是ios 下使用的Tab ...
- double类型与Double包装类型
先看下面的代码 package test; public class DoubleTest { public static void main(String[] args) { Double oD = ...
- redis使用入门
redis使用 1. redis安装 sudo apt-get install redis-server 2. redis使用(以localhost为例) redis启动 redis-cli -h h ...