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 函数式编程 常用内置函数 其他内置函数 函数 函数的定义方法 函数就相 ...
随机推荐
- javascript“类”与继承总结和回顾
Javascipt语法不支持"类"(class)[es6已经支持],但是有模拟类的方法.今天我主要谈谈Javascipt中模拟“类”的方法及js中继承的总结和回顾. js中实现“类 ...
- java面试基础篇(三)
1.Q:ArrayList 和 LinkedList 有什么区别? A:ArrayList查询快!LinkedList增删快.ArrayList是基于索引的数据接口,它的底层是数组.空间占用相对小一些 ...
- python基础面试题整理---从零开始 每天十题(01)
最近在弄flask的东西,好久没写博客的,感觉少了点什么,感觉被别人落下好多,可能渐渐的养成了写博客的习惯吧.也是自己想学的东西太多了(说白了就是基础太差了,只是know how,不能做到konw w ...
- [NOI2010]海拔——最小割+对偶图
题目链接 SOLUTION 想一下最优情况下肯定让平路或下坡尽量多,于是不难想到这样构图:包括左上角的一部分全部为\(0\),包括右下角的一部分全部为\(1\),于是现在问题转化为求那个分界线是什么. ...
- shell脚本,批量创建10个系统帐号并设置密码为随机8位字符串。
[root@localhost wyb]# cat user10.sh #!/bin/bash #批量创建10个系统帐号wangyb01-wangyb10并设置密码(密码为随机8位字符串). > ...
- 四. python网络编程
第八章.网络基础知识 1. TCP/IP协议介绍 1.TCP/IP概念 TCP/IP: Transmission Control Protocol/Internet Protocol的简写,中译名为传 ...
- 使用iptables缓解DDOS及CC攻击
使用iptables缓解DDOS及CC攻击 LINUX 追马 7个月前 (02-09) 465浏览 0评论 缓解DDOS攻击 防止SYN攻击,轻量级预防 iptables -N syn-flo ...
- Elasticsearchs的安装/laravel-scout和laravel-scout-elastic的安装
安装: https://github.com/medcl/elasticsearch-rtf 先下载包 下载解压后 cd elasticsearch-rtf-master ll bin/elastic ...
- c++-string-1
解答注意: 我写的时候考虑了: 1) " my"(设置flag,为true时表示上一个是非空格字符) 2) "hello John"(最后不是空格结尾, ...
- JavaScript正则表达式-后缀选项(标记)
i:表示匹配时不区分大小写 Str = "JavaScript is different from java"; reg = /java\w*/i; arr_m = str.mat ...