python全局变量和局部变量
目录
1.python 的全局变量和局部变量
全局变量定义:在函数外部定义的变量。所有函数内部都可以使用这个变量。
局部变量定义:在函数内部定义的变量。这个变量只能在定义这个变量的函数内部使用。
第一种:global定义全局变量在自定义函数内部
在Python中有一个global关键字用来声明一个全局变量
def first():
global key
key = 1
print(key)
def second():
print(key)
def third():
key = 3
print(key)
first()
second()
third()
print(key)
结论:上面例子说明了 global 定义全局变量:
- 在自定义函数内部定义global,用于告诉python这是一个全局变量
- 作用跟在全局作用域 里写下一个 全局变量a 是一样一样的效果
第二种:全局定义全局变量,并给其赋值
(注:在全局内写“key="值"相当于在全局内写“global key; key="值"”)
key = 0
def first():
key = 1
print(key)
def second():
print(key)
first()
second()
print(key)
2.python 类中public,protected,private定义方式
原则:多用 public 属性,少用 private 属性
在Python中可以通过在变量属性以及方法属性是否有下划线“_”进行区分public、protected、private类型。
- public类型(全局访问):
xx 没有以下划线开头的变量或者方法是public类型(python中数据和方法默认都是pubic类型)
public类型可以被子类、类内以及类外被访问(全局访问,前提是引用该类)
- protected类型(本类、子类访问):
_xx 以单下划线开头表示的是protected类型的变量或者方法。
protected类型只能允许其本身与子类进行访问(类内部使用:本类及其子类)
在Python中,受保护的变量仍然可以被访问。但是,这种直接访问受保护变量的做法是不鼓励的。使用受保护变量的主要目的是通过约定告知其他开发人员,这个变量是用于内部使用的,而不建议在类的外部直接操作。这种约定有助于维护代码的可读性、可维护性和灵活性,以保护内部实现细节并减少不必要的外部依赖。
- private(本类访问):
__xx 双下划线表示的是私有类型的变量或者方法
private类型只能允许类内进行访问,其他类及其子类都不能直接访问私有成员
例子:
class My(object):
def __init__(self):
self.public_field = 5
self._protect_filed = 8
self.__private_field = 10
def get_private_filed(self):
return self.__private_field
obj = My()
print(obj.public_field) # 访问 public 属性 --全局访问
print(obj._protect_filed) # 访问 protected 属性 --本类、子类访问
print(obj.__private_field) # 访问 private 属性会报错 --本类访问
- protected 属性例子:
- private 属性例子:

3.python 中类的实例化
class MyObject(object):
def __init__(self):
self.public_field = 5
self._protect_filed = 8
self.__private_field = 10
__init__
是一个特殊的方法(也称为构造方法或初始化方法),用于在创建类的实例时进行初始化操作。- 实例化时,调用类的
__init__
方法,并传入self
参数(表示新创建的实例对象)
在 Python 中,self
是一个惯例性参数名,它表示类的实例对象自身。当你定义类的方法时,第一个参数通常被称为 self
,它表示该方法是一个实例方法,可以在类的实例对象上调用。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~