变量就是一个名字,里面存放的具体内容是程序里通过赋值语句来改变。在表达式运算时,只需要用变量名来组成式子,具体运算结果就按照运算时变量里具体存放的内容来运算。
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了梅河口免费建站欢迎大家使用!
例如一个函数内有一个变量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
好像很难实现对变量X的任何改变都调用函数f(),调用的过程通常发生在对变量X的赋值和读取之时;如果变量赋值为某种结构类型,例如list,对list内元素的处理,无法引发调用
1、可以使用class的property属性实现
2、可以考虑使用yield语法实现
File file2.py:
import file1
x = file1.joinf()
x.X = 90 或者 m = x.X时都可以执行不同的程序
========================================
File file1.py:
def ART(func):
return property(**func())
class joinf():
def __init__(self):
self.__X = None #真实保存变量的地方,不可直接访问
@ART
def X():
def fget(self): #执行m=x.X时调用的函数
pass #可以在此执行任何指令和函数 - 可以在此调用函数f()
return self.__X #不一定非要返回原值,此处返回什么,m得到的就是什么
def fset(self, value): #执行x.X=90 操作时执行的函数,value就是90
pass #可以在此执行任何指令和函数 - 可以在此调用函数f()
self.__X = value #不一定把原值付给self.__X的,可以对value进行处理后再赋值给value
return locals()
(1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值不变。
(2)简单数据类型变量在用global保留字声明后,作为全局变量使用,函数退出后该变量保留且值被函数改变。
(3)对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可以直接使用并修改全局变量的值。
(4)如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作,函数退出后局部变量被释放,全局变量值不变。
*《python语言程序设计基础》.高等教育出版社