局部变量与全局变量

全局变量:全局生效的变量,在顶头的,无缩进的定义的变量。

局部变量:函数内生效的变量,在函数内定义的变量。

name='1fh'
def changename():
name='sb'
print('shi',name)
changename()
print(name)

函数里的局部变量无法改变修改全局变量

而global可以使函数内出现的函数名变成全局变量处理

那个局部变量可以读取可以赋值

name='1fh'
def changename():
global name
name='sb'
print('shi',name)
changename()
print(name)

一般全局变量大写,局部变量小写。

指定上一级的变量nonlocal

def xiba():
name = 'shit'
print(name)
def xiba1():
nonlocal name
name = 'abcd'
xiba1()
print(name)
xiba()

前向引用:

如果执行一个函数时里面要调用另外一个函数,而另外一个函数在调用函数的后面才

定义,这种情况会出现报错

错误示例

def foo():
print('from foo')
bar()
foo()
def bar():
print('from bar')

递归:一层一层往下,在函数内部,不断调用自己,死循环会报错,要有结束条件

def calc(n):
print(n)
if int(n/2) ==0:
return n
return calc(int(n/2)) #不断调用自己
calc(10)

递归加强版

person_list=['alex','wupeiqi','yuanhao','linhaifeng','sb','sb1']
def ask_way(person_list):
answer1='没有人知道位置'
answer2 = '知道位置'
if len(person_list) == 0:
return answer1
person = person_list.pop(0) # pop是删除第一个位置的元素,并取得这个元素的值
print(person)
if person =='linhaifeng':
return answer2
else:
print('this man dont know the way',person)
return ask_way(person_list) #注意递归的语句要前面要加上return,否则返回值会变成none出错
abcd=ask_way(person_list)
print(abcd)

作用域:函数的执行与进行def定义的那段有关,与在哪调用无关

这里返回的函数名的意思是返回这个函数名所占用的内存地址

def test1():
print('in the test1')
return test1
res= test1()
print(res)

作用域示例:

name = 'alex'
def foo():
name = 'lhf'
def bar():
name='abcd'
print(name)
bar() #这个bar可以成功调用,因为她与def bar同级
foo()
bar() #这个bar不能成功调用会报错,因为它是def bar的上一级

针对报错的问题,可以将bar函数的内存地址弄出来,然后直接对内存地址进行调用

name = 'alex'
def foo():
name = 'lhf'
def bar():
name='abcd'
print(name)
return foo #注意这个return是bar的返回值
return bar #注意这个return是foo的返回值
resbar=foo()
resbar()
sb= resbar()
print(sb)

匿名函数

1定义方法:

使用lambda定义。lambda 形参名:处理的方法
lambda可以随便赋予名字,平常不占用内存
比如以下这段函数

def calc(x):
return x+1
res = calc(10)
print(res)

等同于

func=lambda x:x+1
print(func(10))

比如下面这段函数

name = 'alex'
def changename(x):
return name+'sb'
res=changename('alex')
print(res)

等同于

name=input('press the name')
res=lambda x:str(name)+'sb'
print(res(name))

可以包含多个形参

func=lambda x,y,z:(x+1,y+1,z+1)
print(func(1,3,4))

Py变量,递归,作用域,匿名函数的更多相关文章

  1. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  2. day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  3. python之三元表达式、列表推导、生成器表达式、递归、匿名函数、内置函数

    目录 一 三元表达式 二 列表推到 三 生成器表达式 四 递归 五 匿名函数 六 内置函数 一.三元表达式 def max(x,y): return x if x>y else y print( ...

  4. Python之函数的递归、匿名函数、内置函数

    一.函数的递归 ''' 1 什么是函数递归 函数递归调用(是一种特殊的嵌套调用):在调用一个函数的过程中,又直接或间接地调用了该函数本身 递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,强调 ...

  5. python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

    http://www.cnblogs.com/linhaifeng/articles/7580830.html 三元表达式.列表推导式.生成器表达式.递归.匿名函数.内置函数

  6. python3 速查参考- python基础 6 -> 函数编程之参数、变量、作用域、递归、匿名函数 lambda

    函数基础 1. 速查笔记 #-- 函数相关的语句和表达式 myfunc('spam') # 函数调用 def myfunc(): # 函数定义 return None # 函数返回值 global a ...

  7. python开发基础04-函数、递归、匿名函数、高阶函数、装饰器

    匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...

  8. python 三元运算符、推导式、递归、匿名函数、内置函数

    三目运算符 # 三目(元)运算符:就是 if...else...语法糖 # 前提:简化if...else...结构,且两个分支有且只有一条语句 # 注:三元运算符的结果不一定要与条件直接性关系 cmd ...

  9. Python day5 --------递归、匿名函数、高阶函数、内置函数

    一.递归 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归要求: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减 ...

  10. python协程函数、递归、匿名函数与内置函数使用、模块与包

    目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a. ...

随机推荐

  1. js--数组的filter()过滤方法的使用

    前言 你还在通过for循环遍历数组吗?你还在遍历之后一项一项的通过if判断过滤你需要的数据吗?你还在写着一大堆代码实现一个简单的过滤数据功能吗?那么,今天他来了.他就是这里要介绍的es6中数组filt ...

  2. 【超详细】MakeDown(Typora)+PicGo+Gitee实现图床

    [超详细]MakeDown(Typora)+PicGo+Gitee实现图床 序言:我们有时在用makedown整理笔记时想把自己的笔记上传到博客园,可是发现在上传过程中makedown中的图片显示不出 ...

  3. P4735 最大异或和 01 Trie

    题目描述 给定一个非负整数序列 \(\{a\}\),初始长度为\(n\). 有 \(m\) 个操作,有以下两种操作类型: \(A\ x\):添加操作,表示在序列末尾添加一个数 \(x\),序列的长度 ...

  4. 简单的堆排序-python

    AA = raw_input().strip().split(' ') A = [] ###############初始化大堆############### def fixUp(A): k = len ...

  5. [UWP] - Adaptive Trigger Featurede的使用方法及效果

    XAML代码: <Page.Resources> <!-- DataTemplate to use in the portrait layout. --> <DataTe ...

  6. 使用 transmittable-thread-local 组件解决 ThreadLocal 父子线程数据传递问题

    在某个项目中,需要使用mybatis-plus多租户功能以便数据隔离,前端将租户id传到后端,后端通过拦截器将该租户id设置到ThreadLocal以便后续使用,代码大体上如下所示: ThreadLo ...

  7. Xtrabackup备份与恢复

    一.Xtrabackup介绍 MySQL冷备.mysqldump.MySQL热拷贝都无法实现对数据库进行增量备份.在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况 ...

  8. DX关联VS

    // Windows API: #include <windows.h>   // C 运行时头文件,测试可能会用到 #include <stdlib.h>  //standa ...

  9. Java学习日报7.20

    //7.20 三个和尚比身高import java.util.Scanner; //导包public class Hello{ public static void main(String[] arg ...

  10. ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成

    在一般的系统中,往往也有短信模块的需求,如动态密码的登录,系统密码的找回,以及为了获取用户手机号码的短信确认等等,在ABP框架中,本身提供了对邮件.短信的基础支持,那么只需要根据自己的情况实现对应的接 ...