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 函数式编程 常用内置函数 其他内置函数 函数 函数的定义方法 函数就相 ...
随机推荐
- 并查集+思维——Destroying Array
一.题目描述(题目链接) 给定一个序列,按指定的顺序逐一删掉,求连续子序列和的最大值.例如序列1 3 2 5,按3 4 1 2的顺序删除,即依次删除第3个.第4个.第1个.第2个,答案为5 4 3 0 ...
- JS与IOS、安卓的交互
最近做的项目中涉及到了与安卓和ios的交互问题,对于一个新手来说,多多少少会有点迷糊.在调用安卓和ios的callback回调时,很轻松的就调用成功了,而且,步骤也不那么繁琐.刚开始,只知道那样使用可 ...
- [LUOGU] P1048 采药
题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...
- Git学习——把文件推送到远程仓库
本地仓库与GitHub仓库关联 git remote add origin git@github.com:<github账户名>/<github的仓库名>.git 把本地库的所 ...
- linux内核数据结构
https://blog.csdn.net/zhangskd/article/details/11225301 在看ip_acct.c相关代码时看到大量使用了 hlist_nulls_for_each ...
- 小数据池 is 和 ==的区别
小数据池 一.小数据池 1)代码块 python程序是由代码块构成的,一个代码块的文本作为pythont程序执行的单元 官方文档: A Python program is constructed fr ...
- failed to execute goal org.apache.maven.plugins:maven-archetype-plugin错误解决方法
使用maven创建project时碰到如下错误: D:\codes\JSF>mvn archetype:create -DgroupId=com.tutorialspoint.test -Dar ...
- spring的自动装配,骚话@Autowired的底层工作原理
前言 开心一刻 十年前,我:我交女票了,比我大两岁.妈:不行!赶紧分! 八年前,我:我交女票了,比我小两岁,外地的.妈:你就不能让我省点心? 五年前,我:我交女票了,市长的女儿.妈:别人还能看上你?分 ...
- lucene segment的产生,flush, commit与es的refresh,flush
1 segment的产生 当索引一个文档时,如果存在空闲的segment(未被其他线程锁定),则取出空闲segment list中的最后一个segment(LIFO),并锁定,将文档索引至该segme ...
- Exchange 邮件服务器内存硬盘估算