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)

image-20230719092343115


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 属性会报错  --本类访问

image-20230719101143250

  • protected 属性例子:

  • private 属性例子:
image-20230729200217138

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,它表示该方法是一个实例方法,可以在类的实例对象上调用。

posted @   德琪  阅读(743)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示