1、命名空间

#内置命名空间 —— python解释器
  # 就是python解释器一启动就可以使用的名字存储在内置命名空间中
  # 内置的名字在启动解释器的时候被加载进内存里
#全局命名空间 —— 我们写的代码但不是函数中的代码
  # 是在程序从上到下被执行的过程中依次加载进内存的
  # 放置了我们设置的所有变量名和函数名
#局部命名空间 —— 函数
  # 就是函数内部定义的名字
  # 当调用函数的时候 才会产生这个名称空间 随着函数执行的结束 这个命名空间就又消失了

#在局部:可以使用全局、内置命名空间中的名字
#在全局:可以使用内置命名空间中的名字,但是不能用局部中使用
#在内置:不能使用局部和全局的名字的

2、作用域

# 全局作用域 —— 作用在全局 —— 内置和全局名字空间中的名字都属于全局作用域 ——globals()
# 局部作用域 —— 作用在局部 —— 函数(局部名字空间中的名字属于局部作用域) ——locals()

# 对于不可变数据类型 在局部可是查看全局作用域中的变量
# 但是不能直接修改
# 如果想要修改,需要在程序的一开始添加global声明
# 如果在一个局部(函数)内声明了一个global变量,那么这个变量在局部的所有操作将对全局的变量有效

3、全局变量和局部变量

a = 10
def func():
a = 20
print(a)
func()
#输出10

4、global用法

1. 可以把全局中的内容引入到函数内部

2. 如果没有则在全局创建一个变量

a = 10 # 全局变量本身就是不安全的, 不能随意修改, 闭包
def func():
global a
a = 20
print(a)
func()
#输出20

5、nonlocal用法(没找到会报错)

def outer():
a = 10
def inner(): # 在inner中改变a的值
nonlocal a # 寻找外层函数中离他最近的那个变量
a = 20
inner()
print(a)
outer()

6、案例说明

a = 1
def fun_1():
a = 2
def fun_2():
nonlocal a
a = 3
def fun_3():
a = 4
print(a)
print(a)
fun_3()
print(a)
print(a)
fun_2()
print(a)
print(a)
fun_1()
print(a)
#输出1
#
#
#
#
#
#

7、例题

1、此题需注意是个大坑

def extendlist(val,list=[]):
list.append(val)
return list list1 = extendlist(10)
list2 = extendlist(123,[])
list3 = extendlist('a') print('list1=%s' %list1)
print('list2=%s' %list2)
print('list3=%s' %list3)
#输出
# list1=[10, 'a']
# list2=[123]
# list3=[10, 'a']

2、

def func():
result = []
hua = ["红心","草花","黑桃","方块"]
shuzi = [2,3,4,5,6,7,8,9,10,'J','Q','K','A']
for i in hua:
for j in shuzi:
result.append([i,j])
return result
print(func())

3、

def calc(a,b,c=2,d=4):
return (a+b)*(c-d)
print(calc(1,2,5,d=4))
print(calc(1,2,c=5,4))#会报错需注意

4、

def func(*args):
sum = 0
for i in args:
sum = sum + i
print(sum)
func(1,2,3)

5、

def func(*args):#打散
print(args)
func(*[1,2,3,4],*"你好啊")
#输出(1, 2, 3, 4, '你', '好', '啊')

6、九九乘法表

for i in range(1,10):
for j in range(1,i+1):
print("%sx%s=%s" %(i,j,i*j),end=" ")
print()

python note 10 函数变量的更多相关文章

  1. Python基础3 函数 变量 递归 -DAY3

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

  2. 自学python day 10 函数的动态参数、命名空间、作用域

    作业提升: s为字符串 s.isalnum() 所有字符都是字母或者数字 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符否是数字 2. for i in range(1,1 ...

  3. python note 11 函数名的使用、闭包、迭代器

    1.函数名就是一个变量 def func(): print("我是一个小小的函数") a = func print(a) #输出变量存放地址 <function func a ...

  4. Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器

    今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...

  5. python基础——10(三元运算符、匿名函数)

    一.三元运算符 本质是if--else--的语法糖 前提:简化if--else--的结构,且两个分支有且只有一条语句 案例: a = 20 b = 30 res = a if a > b els ...

  6. [19/10/13-星期日] Python中的函数

    一.函数 # 第五章 函数 ## 函数简介(function) - 函数也是一个对象 - 对象是内存中专门用来存储数据的一块区域 - 函数可以用来保存一些可执行的代码,并且可以在需要时,对这些语句进行 ...

  7. Python基础:10函数参数

    局部命名空间为各个参数值创建了一个名字,一旦函数开始执行,就能访问这个名字了. 在函数调用时,有非关键字参数和关键字参数之分,非关键字参数必须位于关键字参数之前. 在函数定义时,严格的顺序是:位置参数 ...

  8. Python使用property函数定义的属性名与其他实例变量重名会怎么样?

    首先如果定义的属性名与该属性对应的操作方法操作的实例对象同名就会触发无穷的递归调用,相关部分请参考<Python案例详解:使用property函数定义与实例变量同名的属性会怎样?> 但如果 ...

  9. 015.Python函数名的使用以及函数变量的操作

    一 函数名的使用 python中的函数可以像变量一样,动态创建,销毁,当参数传递,作为值返回,叫第一类对象.其他语言功能有限 1.1 函数名是个特殊的变量,可以当做变量赋值 def func(): p ...

随机推荐

  1. 使用docker创建静态网站应用-多种方式

    能承载静态网站的服务器有很多,本文使用,nginx.apache.tomcat服务器演示docker静态网站应用设置 一,创建docker文件, 不同服务器的docker文件不一样,下面分别创建ngi ...

  2. 怎么精确控制solidworks里面的表格的位置

    手工移动是不可能的,总是有点误差,虽然有主动捕捉的功能. public void SetTablePosition(TableAnnotation table, double x, double y) ...

  3. Ajax 请求请求 MVC WebAPI跨域问题;XMLHttpRequest cannot load

    问题:XMLHttpRequest cannot load http://192.168.1.4:9010//api/contacts. The 'Access-Control-Allow-Origi ...

  4. oracle入坑日记<四>表空间

    1   表空间是什么 1.1.数据表看做的货品,表空间就是存放货品的仓库.SQLserver 用户可以把表空间看做 SQLserver 中的数据库. 1.2.引用[日记二]的总结来解释表空间. 一个数 ...

  5. Android 开发 倒计时功能 转载

    原文地址:https://www.cnblogs.com/xch-yang/p/7920419.html Android为我们封装好了一个抽象类CountDownTimer,可以实现计时器功能: /* ...

  6. java8-函数编程

    在Function里面看到一个很奇怪的代码 static <T> Function<T, T> identity() { return t -> t; } 手动写了几个代 ...

  7. LeetCode 102. Binary Tree Level Order Traversal 二叉树的层次遍历 C++

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  8. 字节码操作JAVAssist

    字节码操作Javassist 字节码:字节码是设计被用来将代码高效的传送给多种软件平台.硬件平台,字节码的设计也实现了Java的平台无关性,字节码比机器码更抽象,它通常被认为是包含了一个可执行文件的二 ...

  9. 使用shell命令给文件中每一行的前面、后面添加字符

    shell command shell给一个文件中的每一行开头插入字符的方法:awk '{print "xxx"$0}' fileName shell给一个文件中的每一行结尾插入字 ...

  10. Vue stage3

    <body> <div id="box1"> <div v-bind:class="{ 'active': isActive, 'error ...