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--函数与变量的更多相关文章

  1. Python入门篇-函数、参数及参数解构

    Python入门篇-函数.参数及参数解构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数概述 1>.函数的作用即分类 函数 数学定义:y=f(x) ,y是x的函数,x ...

  2. Python入门学习:1.变量和简单的数据类型

    python入门学习:1.变量和简单的数据类型 关键点:变量.字符串.数字 1.1 变量的命名和使用1.2 字符串1.3 数字1.4 注释 1.1 变量的命名和使用   变量,顾名思义是一个可变的量, ...

  3. Python入门之 函数

    Python入门之 函数 1.初识函数 1.1 什么是函数? <1> 将某个功能封装到一个空间中就是一个函数 <2> 减少重复代码 1.2 定义函数 def -- python ...

  4. Python入门-初始函数

    今天让我们来初步认识一个在python中非常重要的组成部分:函数 首先,让我们来幻想这样一个场景: 比如说我们现在想要通过社交软件约一个妹子,步骤都有什么? print('打开手机 ') print( ...

  5. python基础(12):函数(二)

    1. 函数参数 之前我们说过了传参,如果我们需要给⼀个函数传参,⽽参数⼜是不确定的,或者我给⼀个函数传很多参数,我的形参就要写很多,很⿇烦,怎么办呢,我们可以考虑使⽤动态参数. 形参的第三种: 动态参 ...

  6. Python入门之函数的介绍/定义/定义类型/函数调用/Return

    本篇目录: 一. 函数的介绍 二. 函数的定义 三. 定义函数的三种类型 四. 函数调用的阶段 五. Return返回值 ======================================= ...

  7. python入门15 函数

    函数的主要作用是实现代码复用 1 python内置函数 2 匿名函数lambda 3 自定义函数 def functionname(arg):... #coding:utf-8 #/usr/bin/p ...

  8. Python中的函数与变量

    本节内容 函数的定义方法 函数功能 函数的返回值 函数的形参与实参 全局变量与局部变量 递归 函数的作用域 匿名函数lambda 函数式编程 常用内置函数 其他内置函数 函数 函数的定义方法 函数就相 ...

  9. python中的函数和变量

    本节内容 函数的定义方法 函数功能 函数的返回值 函数的形参与实参 全局变量与局部变量 递归 函数的作用域 匿名函数lambda 函数式编程 常用内置函数 其他内置函数 函数 函数的定义方法 函数就相 ...

随机推荐

  1. 爬虫_python3_urllib

    urlib库为python3的HTTP内置请求库 urilib的四个模块: urllib.request:用于获取网页的响应内容 urllib.error:异常处理模块,用于处理异常的模块 urlli ...

  2. CPP-基础:String类

    已知类String的原型为: class String { public: String(const char *str = NULL); // 普通构造函数 String(const String ...

  3. nyoj-47-过河问题|POJ-1700-Crossing River

    http://acm.nyist.net/JudgeOnline/problem.php?pid=47 http://poj.org/problem?id=1700 解题思路:求最少需要多少时间才能都 ...

  4. 组件开发中的Controller View模式

    “Controller View”模式: 组件嵌套中,最顶层的组件只管理State 子组件为纯组件 顶层组件分配State给子组件,作为子组件的props 子组件接受顶层组件发来的State作为自身的 ...

  5. 控制mysql数字转换

    在实际工作中我们常常需要将数字进行格式化,比如将12.0073233变为12.01,或把12变为12.00,或把12变为0000012,这种格式之间的转换总结如下:     一,浮点数的转换--直接设 ...

  6. InnoDB体系架构总结(二)

    事务 确保事务内的SQL都可以同步执行 要么一起成功 要么一起失败.事务有四个特性原子性 一致性,隔离性,持久性 实现方式 开始事务的时候回家记录记录一个LSN日志序列 当事务执行的时候 会首先在In ...

  7. Scrapy爬取多层级网页内容的方式

    # -*- coding: utf-8 -*- import scrapy from Avv.items import AvvItem class AvSpider(scrapy.Spider): n ...

  8. java 之Thread线程相关yield()、sleep()、wait()、join()、run和start方法详解

    1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据.注意该方 ...

  9. Knockout v3.4.0 中文版教程-6-计算监控-可写的计算监控

    2.可写的计算监控 初学者可能想要跳过本节 - 可写的计算监控是相当高级的部分,在大多数情况下不是必需的. 通常,计算监控是一个通过其他监控值计算出的值,因此是只读的. 令人惊讶的是,可以使计算监控值 ...

  10. win10 设置软件开机启动项失效

    问题重现: win10系统,只要是图标右下角带盾牌标志的软件,加入系统的启动文件夹:如:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Sta ...