Python入门--12--函数与变量
python只有函数没有过程
函数有运行完了之后会有返回值、过程没有
def back():
return 1,'gg',2 #会有返回值(1,'gg',2) #注意默认返回元祖
一、全局和局部变量
在函数里面想改变全局变量的值,需要加上:global XX列表或单一值
二、内嵌函数
def ee():
print "123"
def ww()
print "456"
ww() #最后在调用一下 你就可以在命令行输入ee() 会有123 456输出
在外面调用ww() 是无法调用的
三、闭包
函数式编程的重要语法结构,函数式编程是一种编程方式,其最经典的一个编程语言就是lisp 主要用于绘图与人工智能,天才程序员才使用的语言
闭包概念:如果在一个内部函数里,对外部作用域(不是在全局变量的引用),那么内部函数就被认为闭包
def Funx():
def FunY(y):
return x * y
return FunY
可以这样用:
i = FunX(8)
i(5) #先赋值x 再赋值y 最后输出40
在内部函数中只能调用外部函数的局部变量,但不能修改
还有调用的注意,看下面的这个栗子:
x=10
def www():
x *= x
return x #发现会报错,因为x=10是全局变量,而自定义函数里面的x是局部变量的x,
print www() #跟外面的x是不一样的
同样下面的这种引用也会报错:
def Fun1():
x = 5
def Fun2():
x *= x
return x
return Fun2()
现在输入Fun1()会报错,因为python会把Fun2()函数中的x当做内部函数的变量,不会引用外部函数的变量
避免这样的方法以前是这样做:
def Fun1():
x = [5]
def Fun2():
x [0]*= x[0]
return x[0]
return Fun2() #把数据的容器变一下,变为列表
python3现在不用那么麻烦,直接价加一个东西就好了:
def Fun1():
x = 5
def Fun2():
nonlocal x #变为非局部变量,就可以在内部函数里面使用外部函数的变量
x *= x
return x
return Fun2()
#在函数中修改全局变量的值,使用global xx变量
#在嵌套的函数中,想在内部函数中修改外部函数的局部变量 使用nonlocal
##################################################################
四、匿名函数:lambda
python写一些执行脚本时,使用lambda就可以省下定义函数的过程,使得代码更简单,还可以避免重复,简化代码可读性
def ww(x):
return x * x #两行代码
lambda x : x*x #几个字就解决 还可以 g = lambda x : x*x 就可以使用 g(x)来替代这个式子
五、介绍两个BIF
1、filter(函数,可迭代的对象列表元祖什么的) #有两个参数,其返回结果会是使用函数在对象中的每个元素进行迭代
#并返回为TRUE的列表
list(filter(None,[1,0,Flase,True])) #会返回[1,True]
list(filter((lambda x: x %2),range(10))) #自定义一个函数:用x除以2 得到余数,范围是1到10
#用filter处理,并生成list
2、map()
map在语言里面是映射的意思。将序列的每一个元素作为函数的参数,并进行迭代加工
list(map(lambda x : x*2,range(10))) #生成0,2,4,6,8,10,12,14,16,18
六、补充
def funOut():
def funIn():
print('宾果!你成功访问到我啦!')
return funIn
上面的函数怎么能访问funIn?
第一种方法:funOut()()
第二种方法:go = funOut()
go()
下面介绍一个很好的方法,用于看有很多符号的字符串中的字母、数字
str1='''xxx''' #str1可以很长很长,有许多你看不懂的¥#!@%&***¥#,其中夹杂着字母数字
for each in str1:
if each not in list1:
list1.append(each) #输出的是单一的‘@’ ‘#’ ‘¥’ ‘%’ ‘……’ ‘&’ ‘&’ ‘*’
print (list1) #情况一目了然
可以继续改良一下:
str1 = '''拷贝过来的字符串'''
list1 = []
for each in str1:
if each not in list1:
if each == '\n':
print('\\n', str1.count(each))
else:
print(each, str1.count(each))
list1.append(each)
Python入门--12--函数与变量的更多相关文章
- Python入门篇-函数、参数及参数解构
Python入门篇-函数.参数及参数解构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数概述 1>.函数的作用即分类 函数 数学定义:y=f(x) ,y是x的函数,x ...
- Python入门学习:1.变量和简单的数据类型
python入门学习:1.变量和简单的数据类型 关键点:变量.字符串.数字 1.1 变量的命名和使用1.2 字符串1.3 数字1.4 注释 1.1 变量的命名和使用 变量,顾名思义是一个可变的量, ...
- Python入门之 函数
Python入门之 函数 1.初识函数 1.1 什么是函数? <1> 将某个功能封装到一个空间中就是一个函数 <2> 减少重复代码 1.2 定义函数 def -- python ...
- Python入门-初始函数
今天让我们来初步认识一个在python中非常重要的组成部分:函数 首先,让我们来幻想这样一个场景: 比如说我们现在想要通过社交软件约一个妹子,步骤都有什么? print('打开手机 ') print( ...
- python基础(12):函数(二)
1. 函数参数 之前我们说过了传参,如果我们需要给⼀个函数传参,⽽参数⼜是不确定的,或者我给⼀个函数传很多参数,我的形参就要写很多,很⿇烦,怎么办呢,我们可以考虑使⽤动态参数. 形参的第三种: 动态参 ...
- Python入门之函数的介绍/定义/定义类型/函数调用/Return
本篇目录: 一. 函数的介绍 二. 函数的定义 三. 定义函数的三种类型 四. 函数调用的阶段 五. Return返回值 ======================================= ...
- python入门15 函数
函数的主要作用是实现代码复用 1 python内置函数 2 匿名函数lambda 3 自定义函数 def functionname(arg):... #coding:utf-8 #/usr/bin/p ...
- Python中的函数与变量
本节内容 函数的定义方法 函数功能 函数的返回值 函数的形参与实参 全局变量与局部变量 递归 函数的作用域 匿名函数lambda 函数式编程 常用内置函数 其他内置函数 函数 函数的定义方法 函数就相 ...
- python中的函数和变量
本节内容 函数的定义方法 函数功能 函数的返回值 函数的形参与实参 全局变量与局部变量 递归 函数的作用域 匿名函数lambda 函数式编程 常用内置函数 其他内置函数 函数 函数的定义方法 函数就相 ...
随机推荐
- 爬虫_python3_urllib
urlib库为python3的HTTP内置请求库 urilib的四个模块: urllib.request:用于获取网页的响应内容 urllib.error:异常处理模块,用于处理异常的模块 urlli ...
- CPP-基础:String类
已知类String的原型为: class String { public: String(const char *str = NULL); // 普通构造函数 String(const String ...
- nyoj-47-过河问题|POJ-1700-Crossing River
http://acm.nyist.net/JudgeOnline/problem.php?pid=47 http://poj.org/problem?id=1700 解题思路:求最少需要多少时间才能都 ...
- 组件开发中的Controller View模式
“Controller View”模式: 组件嵌套中,最顶层的组件只管理State 子组件为纯组件 顶层组件分配State给子组件,作为子组件的props 子组件接受顶层组件发来的State作为自身的 ...
- 控制mysql数字转换
在实际工作中我们常常需要将数字进行格式化,比如将12.0073233变为12.01,或把12变为12.00,或把12变为0000012,这种格式之间的转换总结如下: 一,浮点数的转换--直接设 ...
- InnoDB体系架构总结(二)
事务 确保事务内的SQL都可以同步执行 要么一起成功 要么一起失败.事务有四个特性原子性 一致性,隔离性,持久性 实现方式 开始事务的时候回家记录记录一个LSN日志序列 当事务执行的时候 会首先在In ...
- Scrapy爬取多层级网页内容的方式
# -*- coding: utf-8 -*- import scrapy from Avv.items import AvvItem class AvSpider(scrapy.Spider): n ...
- java 之Thread线程相关yield()、sleep()、wait()、join()、run和start方法详解
1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据.注意该方 ...
- Knockout v3.4.0 中文版教程-6-计算监控-可写的计算监控
2.可写的计算监控 初学者可能想要跳过本节 - 可写的计算监控是相当高级的部分,在大多数情况下不是必需的. 通常,计算监控是一个通过其他监控值计算出的值,因此是只读的. 令人惊讶的是,可以使计算监控值 ...
- win10 设置软件开机启动项失效
问题重现: win10系统,只要是图标右下角带盾牌标志的软件,加入系统的启动文件夹:如:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Sta ...