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 函数式编程 常用内置函数 其他内置函数 函数 函数的定义方法 函数就相 ...
随机推荐
- IOS7.1 企业应用 证书无效 已解决
http://www.cocoachina.com/bbs/read.php?tid=194213&keyword=7.1 关于IOS7.1企业版发布后,用户通过SARAFI浏览器安装无效的解 ...
- 测试框架 Mocha 实例教程(转载:来自阮一峰的一篇文章)
Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用. 所谓"测试框架",就是运行测试的 ...
- CPP-基础:cout
C++编程语言互换流中的标准输出流,需要iostream.h支持.读为 "c out". 使用范例 //用户输入的数字由cin保存于变量a中,并通过cout输出. #include ...
- python基础面试题整理---从零开始 每天十题(03)
一.Q:用Python输出一个Fibonacci数列?(斐波那契额数列) A:我们先来看下代码 #!/usr/bin/env python # -*- coding: utf-8 -*- def fi ...
- LeetCode(153) Find Minimum in Rotated Sorted Array
题目 Total Accepted: 65121 Total Submissions: 190974 Difficulty: Medium Suppose a sorted array is rota ...
- PAT Basic 1045
1045 快速排序 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 N 个互不相同 ...
- 设计模式之建造者模式——Builder
一.概述 Builder模式,中文名为建造者模式,又名生成器模式.构建者模式等,是创建型设计模式之一.用于将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 1.适用性: 对象 ...
- TOJ 4095: love168yk的选美大赛
4095: love168yk的选美大赛 Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal Submit: ...
- iOS学习笔记13-网络(二)NSURLSession
在2013年WWDC上苹果揭开了NSURLSession的面纱,将它作为NSURLConnection的继任者.现在使用最广泛的第三方网络框架:AFNetworking.SDWebImage等等都使用 ...
- 【bzoj2901】矩阵求和 前缀和
题目描述 给出两个n*n的矩阵,m次询问它们的积中给定子矩阵的数值和. 输入 第一行两个正整数n,m. 接下来n行,每行n个非负整数,表示第一个矩阵. 接下来n行,每行n个非负整数,表示第二个矩阵. ...