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

Python全局变量和局部变量

时间:2023-07-21 21:45:12浏览次数:49  
标签: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/17572456.html

相关文章

  • Python基础day50
    RegExp对象//在JS中使用正则表达式,在js中如何使用正则呢?//定义正则表达式两种方式varreg1=newRegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");//第一种定义方式varreg2=/^[a-zA-Z][a-zA-Z0-9]{5,11}///第二种定义方式//正则校验数据varres=reg2.test('jason666......
  • win10+python3.8+Anaconda3+cuda10.2+cudnn7.6+pytorch安装教程
    版本问题很重要,为了这个版本,真的吐血版!!!其他链接1.cuda10.2+cudnn7.6安装和测试的方法2.彻底卸载Anaconda3.新建的虚拟环境总是在c盘怎么解决1.安装Anaconda3在Anaconda安装的过程中,比较容易出错的环节是环境变量的配置,所以大家在配置环境变量的时候,要细心一些①安装......
  • MegEngine Python 层模块串讲(上)
    在前面的文章中,我们简单介绍了在 MegEngineimperative 中的各模块以及它们的作用。对于新用户而言可能不太了解各个模块的使用方法,对于模块的结构和原理也是一头雾水。Python 作为现在深度学习领域的主流编程语言,其相关的模块自然也是深度学习框架的重中之重。模块串讲将对 ......
  • Linux下编译安装python3.7 附带python-dev
    1、安装开发工具包sudoyum-ygroupinstall"Developmenttools" 2、安装依赖包sudoyum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devellibffi-devel ......
  • 经常出现numpy和python版本对应不上的问题
    问题重述:Pleasenoteandcheckthefollowing:*ThePythonversionis:Python3.8from"C:\Users\xulinfei\anaconda3\envs\graduation_tensor1\python.exe"*TheNumPyversionis:"1.20.1"andmakesurethattheyaretheversionsyouexp......
  • 多线程下,C++如何调用Python脚本的方法
    视频教程:多线程场景下,用C++调用Python脚本的方法Git:https://github.com/JasonLiThirty/C-andPython接口函数Python3.6提供给C/C++接口函数,基本都是定义pylifecycle.h,pythonrun.h,ceval.h中。Py_Initialize()和Py_Finalize()C++应用程序调用Python脚本之前,必须先调用Py_I......
  • linux 判断主机存活性脚本 python
    Linux主机存活性脚本Python实现在Linux系统中,我们经常需要判断主机的存活性,即确定某个IP地址是否能够正常访问。这对于网络管理员来说是一个非常重要的任务,因为它们可以定期监控主机的可用性,及时发现并解决网络故障。在本文中,我们将介绍如何使用Python编写一个简单的脚本来判断主......
  • movielens数据集分析python
    Movielens数据集分析Python实现概述本文将介绍如何使用Python对Movielens数据集进行分析。Movielens是一个常用的电影评分数据集,包含了用户对电影的评分、电影信息和用户信息等数据。通过对这个数据集的分析,我们可以探索用户对电影的评分情况,了解用户和电影的特征,并进一步进行推......
  • Python3 pyautogui安装成功,但是不能引用
    安装使用的是pycharm,python3.8python-mpipinstallpyautogui-ihttps://pypi.tuna.tsinghua.edu.cn/simple,显示Successfully。 引用importpyautogui报错:Nomodulenamed'pyautogui'解决办法尝试各种网上的方法,查询环境等,不太懂,感觉没有问题偶然发现虽然piplist有......
  • Python Matplotlib绘图笔记(1)
    文章目录1pyplot.figure()语法参数测试figsizefacecoloredgecolorframeon2pyplot.subplot()说明设置所有子图的大标题分别设置每个子图的标题3pyplot.legend()作用设置图例位置设置图例边框设置图例边框颜色设置图例背景颜色设置图例标题4绘制三维图像利用关键字`projection......