zoukankan      html  css  js  c++  java
  • Python—全局变量、局部变量、匿名函数

    局部变量和全局变量

     1 college1 = 'JMU'      #全局变量
     2 def change_name(name):
     3     college1 = 'LiGong' #局部变量,此函数是其作用域
     4     # global school    #可以在函数内定义全局变量,这样在函数外调用函数体内的school则不会报错。但是千万不要这么干!不要在函数体内定义全局变量
     5     # school = 'jmu'
     6     print("before change:%s"%name,college1)
     7     name = 'GKX'  #局部变量,此函数是其作用域
     8     print('After change:%s'%name)
     9 
    10 name = 'gkx'
    11 change_name(name)
    12 print('now name is:%s'%name)
    13 print(college1)
    14 >>>>>> 15 before change:gkx LiGong  #在函数体内部college的值是 ‘LiGong’,在其作用域内 16 After change:GKX 17 now name is:gkx       #在函数外name的值还是gkx 18 JMU              #在函数外college的值还是JMU

    局部变量不能改全局变量主要是只字符串和数值,一些复杂的数据结构【字典,列表,集合,类】是可以改的。注意元组不行,因为元组本身就是不可变更的。

     1 names = ['gkx','lion','cat']
     2 def change_name():
     3     names[0]='chimpanzee'
     4     print("inside func ",names)
     5 change_name()
     6 print(names)
     7 
     8 >>>>>
     9 inside func  ['chimpanzee', 'lion', 'cat']
    10  ['chimpanzee', 'lion', 'cat']

    global 和 nonlocal

     1 a = 1
     2 def outer():
     3     a = 1
     4     print('outer')
     5     def inner():
     6         print('inner')
     7         def inner2():
     8             nonlocal a   #声明了一个上一层的局部变量,对全局无效,对局部也只是对最近的一层有影响此处若是 global 会修改全局,最上层的a。
     9             a += 1    #此处若是没声明 nonlocal  a是不能被改变的
    10             print('inner2222')
    11             print('***a***, ',a)
    12         inner2()
    13     inner()
    14 
    15 outer()
    16 print(a)
    17 >>>>
    18 outer
    19 inner
    20 inner2222
    21 ***a***,  2
    22 1

     

    lambda匿名函数


    1 calc = lambda x:x*3   #用lambda定义了匿名函数
    2 print(calc(3))
    3 >>>>>>9
    4 >>>>print(calc) 是内存地址
    5 #lambda只能处理三元运算,复杂的类似for循环就处理不了了
    6 x = lambda n:3 if n<3 else n
    x(7)
    >>>>>>7
  • 相关阅读:
    Java开发系列-电子邮箱
    Java开发系列-文件上传
    iOS开发系列-常见离线存储方式
    Java开发系列-注解
    Java开发系列-JSP
    Java开发系列-Cookie与Session会话技术
    Java开发系列-JDBC
    Java开发系列-MySQL
    Java开发系列-时间转换
    java开发系列-服务器tomcat
  • 原文地址:https://www.cnblogs.com/gkx0731/p/9449681.html
Copyright © 2011-2022 走看看