十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
例如一个函数内有一个变量i,怎么在函数外或另一个函数中调用或更改它。新手学习,谢谢。
公司主营业务:网站制作、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出长岭免费做网站回馈大家。
==============================
不能在函数外更改某函数里的局部变量,因为每当你实例化那个函数的时候,那个函数里面的局部变量也会被重新赋值,重新定义,谈何更改呢?
这一个全部变量和局部变量的问题,如果要实现楼主说的,必须使用全局变量(类中的self):
================bianliang.py===========
#coding: utf-8
i = 0 #定义一个全局变量i
def a():
'''
打印出i的值
'''
print i
def b():
global i
a() #调用a方法
print i #打印i
i = 1000 #重新赋值i
print i #打印i
a() #再次调用a方法
b()
=================================
%python bianliang.py
1000
1000
这个py文件里面使用了一个全局变量i,实现了a方法和b方法共用参数i
函数是组织好,可重复使用的,用来实现相关功能的代码段
函数提高了代码的重复利用率和应用的模块性。
除Python自带的函数之外,也可以自己创建函数,叫做自定义函数
语法:
函数代码块以 def 开头
参数为 输入值 ,放于函数名后口号里面,
函数内容以冒号:开始,函数体缩进, return 返回 输出值
函数调用使用关键字参数来确定传入的参数值,此时,如果多个函数则不需要按照指定顺序。
在定义函数时,指定参数默认值。调用时如果不传入参数,则使用默认值
不定长部分如果没有指定参数,传入是一个空元组
加了 两个星号 ** 的参数会以字典的形式导入
/ 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。
3.8版本之后的才能使用
不使用 def 定义函数,没有函数名
lamdba主体时一个表达式,而不是代码块,函数体比def简单很多
定义在函数内部的为局部变量,仅能在函数内部使用
定义在函数外部的为全局变量,可在全局使用
模块是将包含所有定义的函数和变量的文件,一般将同类功能的函数组和在一起称为模块。
模块需要导入后,在调用相应函数进行使用
模块导入的方法:
从模块中导入一个指定的部分
把一个模块的所有内容全都导入
(1)解释一下函数
def fun(lst):
lst[0] = 0;
lst = [4,5,6]
return 0
这里从头到尾,lst都是同一个局部变量,也就是函数的参数,为便于描述,我们把它称为“张三变量”。
lst =[1,2,3] # 变量lst指向列表[1,2,3],为便于描述,把这个lst变量称为“李四变量”,
# 而列表[1,2,3]称为“王五列表”,“李四变量”指向“王五列表”
fun(lst)
调用fun时,把“李四变量”的值赋给了“张三变量”,从而“张三变量”也指向了“王五列表”。
在函数里:
执行 lst[0] = 0 把“王五列表”的0号元素改为值0,
执行 lst = [4,5,6] 修改了“张三变量”的值,把“张三变量”改为指向列表[4,5,6],
执行 return 0 返回。
所以“王五列表”列表最后的值就是[0,2,3],“李四变量”仍然指向“王五列表”。
(2)如果想让输出结果为[4,5,6],请把语句 lst = [4,5,6] 改为
lst[:] = [4,5,6] # 此时是修改“张三变量”指向的“王五列表”
# 自然“李四变量”指向的“王五列表”值已经变为[4,5,6]。
可以把变量设置为全局变量:def fun1(): global var1 ...def fun2(): global var1
def 函数名():
函数体
return 返回值
def 函数名(非可选参数,可选参数):
函数体
return 返回值
def 函数名(参数,*b):
函数体
return 返回值
函数名 = lambda 参数 : 表达式
例1:f = lambda x , y : x + y
调用:f(6 + 8) 输出:14
例2: f = lambda : "没有参数的lambda函数!"
调用: print(f()) 输出: 没有参数的lambda函数!