首页 > 编程语言 >Python全局变量和局部变量

Python全局变量和局部变量

时间:2023-07-29 16:45:25浏览次数:44  
标签:Python self 局部变量 private key print 全局变量 public

目录

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

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

标签:Python,self,局部变量,private,key,print,全局变量,public
From: https://www.cnblogs.com/DQ-MINE/p/17590048.html

相关文章

  • 相对路径以及python引用
    /当前工作目录所在的最顶级目录,即根目录,根目录是相对于其他子目录来说的./当前工作目录('./img/demo.jpg')../当前工作目录上一级目录(当前目录的父级目录)此时的img文件在myblog文件夹内python文件的引用问题fromPStope_Class.WorKFace.TYl_BeamUnitimportTYl_Beam......
  • python requests.session() 不使用session的cookie 自定义cookie
      req=requests.Request('GET',"https://xxxx.gif",headers=headers)#清空cookiesreq.cookies={}#发送请求session.send(req.prepare(),timeout=30,verify=Fa......
  • python的netmiko库备份华为交换机配置
    环境背景可管理华为交换机若干,python3运维安全需求,定期备份网络设备配置步骤安装netmikopip3isntallnetmiko注意netmiko默认的连接超时时间只有10秒钟,需要改conn_timeout大于等于60s。2.编写python脚本fromnetmikoimportConnectHandlerimporttimeimportos#......
  • python数组
    目录1.Delphi定义数组2.Python定义数组(1)列表的3种1)一维列表:2)多维列表:(2)array.array(3)np.zeros(4)数组清理(5)总结3.Django框架定义数组(1)ArrayField(依赖于PostgreSQL数据库)(2)JSONField(支持PostgreSQL、MySQL、SQLite)(3)TextField(4)CharField+validators(5)列表,不定长​ 在编程中,数组是相......
  • 多线程共享全局变量的问题
    线程之间共享全局变量多个线程都是在同一个进程中,多个线程使用的资源都是同一个进程中的资源,因此多线程间是共享全局变量问题示例1importthreading234#全局变量5g_num=0678#对g_num进行加操作9defsum_num1():10foriinrange(......
  • Python下载-2023最新版-编程软件 软件推荐
    《Python电脑版》为你提供便捷的编程服务操作,通过软件中的功能来进行快速的编程操作,Python电脑版带来更好的代码编写操作,并且可以体验到快速的代码运行服务,可以根据自己的需求来进行代码的编写操作。软件地址:看置顶贴python电脑版免费版亮点1、文档Python还带有完整的文档,既集成到......
  • Python编辑器(PyCharm) mac/win 电脑 中文汉化版 软件推荐
    MiniCondapython是一款python环境管理软件,在这款软件中主要帮助用户在电脑中对python环境进行管理和编辑;软件能自由切换自己需要的python环境;并且有着十分稳定的操作环境;软件支持在各种操作系统中使用,性能十分的稳定,能确保开放人员能正常进行编程;软件界面简洁,操作简单,无需任何复杂......
  • Python 装饰器
    当我们谈到Python中的装饰器时,我们实际上是在谈论一种特殊的语法构造,它允许我们在不修改原始函数代码的情况下,向函数添加额外的功能或行为。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。装饰器的语法使用@符号,将装饰器函数放置在要装饰的函数的上方。当我们......
  • python学习难点及举例
    在Python的高级学习中,可能会遇到以下几个难点:迭代器和生成器:迭代器和生成器是Python中强大的概念,但在理解和使用它们时可能会有一些困难。迭代器是一种可以遍历数据集合的对象,而生成器是一种特殊的迭代器,可以按需生成值,而不是一次性生成所有值。#迭代器示例my_list=[1,2,3]m......
  • python爬取壁纸图片到本地
    源码#!/usr/bin/pythonimportrandomimportrequestsimportreimporttimefornuminrange(2,212): #url网页地址url="https://pic.netbian.com/new/index_"+str(num)+".html"#需要爬取图片的网页地址page=requests.get(url).text#得到网页源码#......