python变量的命名和使用

变量名只能包含字母、数字和下划线

变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头。例如,可将变量命名为message_1,但不能将其命名为1_message。

Python 语言中,以下划线开头的标识符有特殊含义

在Python中,以下划线开头的变量名有特殊的含义,尤其是在类的定义中,用下划线作为变量前缀和后缀来表示类的特殊成员。

以单下划线开头

说明

_xx:这样的对象叫做保护变量,不能用’from module import *'导入。
_xx 以单个下划线开头命名的方法或者变量,就是说明它是仅提供内部使用的。

举例1:模块访问举例

首先在demo1.py中定义了两个函数,一个以下划线开头,另外一个不以下划线开头:

def my_fun():
    print('hello my_fun()')
    
def _my_fun():
    print('hello _my_fun()')

然后在另外一个模块demo2.py中访问这两个函数:

from demo1 import *

my_fun()
_my_fun

运行输出:
在这里插入图片描述
可以看到,不以单下划线开头的函数my_fun可以正常访问;而以单下划线开头的_my_fun函数访问出错,提醒没有定义。

举例2:类访问举例

在类A中定义了以单下划线开头的成员变量_num,类Aa继承了A类:

class A():
    def __init__(self):
        self._num = 1
        self._age = 12
        
    def afun(self):
        print(self._age)
        
class Aa(A):
    def __init__(self):
        super().__init__()
        
a = A()
aa = Aa()
print("在父类中访问_num变量:", a._num)
print("在子类中访问_num变量:", aa._num)

运行输出:
在这里插入图片描述
可以发现,通过父类、子类可以访问以单下划线开头的成员变量_num。

以双下划线开头

说明

以双下划线开头的标识符(如__add)表示类的私有成员。
__xxx:类中的私有成员,只有类对象自己的函数中能访问。

举例:类对象通过函数可以访问自身类中双下划线开头的成员变量

在类A中定义了以双下划线开头的变量__age:

class A():
    def __init__(self):  
        self.__age = 12
        
    def afun(self):
        # 在类本身的函数中访问双下划线开头的变量
        print(self.__age)
        
class Aa(A):
    def __init__(self):
        super().__init__()
        
a = A()
aa = Aa()
# 类对象本身调用自己的函数
a.afun()

运行输出:
在这里插入图片描述

举例:子类对象调用父类的函数可以访问父类双下划线开头的成员变量

在类A中定义了以双下划线开头的变量__age:

class A():
    def __init__(self):  
        self.__age = 12
        
    def afun(self):
        # 在类本身的函数中访问双下划线开头的变量
        print(self.__age)
        
class Aa(A):
    def __init__(self):
        super().__init__()
        
a = A()
aa = Aa()
# 子类对象调用父类的函数
aa.afun()

运行输出:
在这里插入图片描述

举例:类对象本身也无法直接访问自己类定义的双下划线开头的成员变量

在类A中定义了以双下划线开头的变量__age:

class A():
    def __init__(self):  
        self.__age = 12
        
    def afun(self):
        # 在类本身的函数中访问双下划线开头的变量
        print(self.__age)
        
class Aa(A):
    def __init__(self):
        super().__init__()
        
a = A()
# aa = Aa()
a.__age

运行输出:
在这里插入图片描述

以双下划线开头、双下划线结尾

以双下划线作为开头和结尾的标识符(如 init),是专用标识符。
以双下划线开头,双下划线结尾的对象,Python内置属性名或者魔法方法名。是Python自己实现的属性和方法,一般不允许自定义类似此种命名方式的属性或者方法。

变量名不能包含空格

变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。

不要将Python关键字和函数名用作变量名

不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。

变量名应既简短又具有描述性

变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。

慎用小写字母l和大写字母O

慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。

备注:就目前而言,应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但避免使用大写字母是个不错的主意。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/232918.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android 相机库CameraView源码解析 (五) : 保存滤镜效果

1. 前言 这段时间,在使用 natario1/CameraView 来实现带滤镜的预览、拍照、录像功能。 由于CameraView封装的比较到位,在项目前期,的确为我们节省了不少时间。 但随着项目持续深入,对于CameraView的使用进入深水区,逐…

若依vue-新建目录及菜单

前面我们把标题和logo换成了自己系统的标题和logo了 接下来就是要建立自己需要的菜单和页面 新建目录解析 在拉下来的代码跑起来后 有一个系统菜单--菜单管理(如图) 在这个菜单的这个页面内有对应的操作功能 修改功能 这个功能可以修改写好了的菜单数据 例如:名称/排序/路由…

(一)五种最新算法(SWO、COA、LSO、GRO、LO)求解无人机路径规划MATLAB

一、五种算法(SWO、COA、LSO、GRO、LO)简介 1、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法(Spider wasp optimizer,SWO)由Mohamed Abdel-Basset等人于2023年提出,该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&…

vscode 编译运行c++ 记录

一、打开文件夹,新建或打开一个cpp文件 二、ctrl shift p 进入 c/c配置 进行 IntelliSense 配置。主要是选择编译器、 c标准, 设置头文件路径等,配置好后会生成 c_cpp_properties.json; 二、编译运行: 1、选中ma…

SpringBoot的依赖管理和自动配置

与其明天开始,不如现在行动! 文章目录 1 依赖管理机制2 自动配置机制2.1 初步理解2.2 完整流程 💎总结 1 依赖管理机制 为什么导入starter-web后所有相关依赖都会导入进来? 开发什么场景,导入什么场景启动器-spring-bo…

[ROS2] --- action

1 action介绍 ROS通信机制也会被常常用到——那就是动作。从这个名字上就可以很好理解这个概念的含义,这种通信机制的目的就是便于对机器人某一完整行为的流程进行管理。 1.1 客户端/服务器模型 动作和服务类似,使用的也是客户端和服务器模型&#xf…

zabbix 进阶

zabbix的字段发现机制: zabbix客户端主动和服务端联系,将自己的地址和端口发送服务端实现字段添加监控主机。 客户端是主动一方。 缺点:自定义网段中主机数量太多,登记耗时会很久,而且这个自动发现机制不是很稳定。…

c-语言->数据在内存的存储

系列文章目录 文章目录 系列文章目录前言 前言 目的:学习整数在内存的储存,什么是大小端,浮点数的储存。 1. 整数在内存中的存储 在讲解操作符的时候,我们就讲过了下⾯的内容: 整数的2进制表⽰⽅法有三种&#xff0…

Minio保姆级教程

转载自:www.javaman.cn Minio服务器搭建和整合 1、centos安装minio 1.1、创建安装目录 mkdir -p /home/minio1.2、在线下载minio #进入目录 cd /home/minio #下载 wget https://dl.minio.io/server/minio/release/linux-amd64/minio1.3、minio配置 1.3.1、添加…

基于Springboot的校园失物招领系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园失物招领系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

三、jvm中的对象及引用

一、对象在jvm的创建过程 检查加载-->分配内存-->内存空间初始化-->设置-->对象初始化 1) 检查加载 首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查类是否已经被加载、解析和初始化过。 虚拟机遇到一条 new 指令时&#xf…

【Deeplearning4j】小小的了解下深度学习

文章目录 1. 起因2. Deeplearning4j是什么3. 相关基本概念4. Maven依赖5. 跑起来了,小例子!6. 鸢尾花分类代码 7. 波士顿房价 回归预测代码 8. 参考资料 1. 起因 其实一直对这些什么深度学习,神经网络很感兴趣,之前也尝试过可能因…

Python实现GUI图片浏览程序

Python实现GUI图片浏览程序 下面程序需要pillow库。pillow是 Python 的第三方图像处理库,需要安装才能实用。pillow是PIL( Python Imaging Library)基础上发展起来的,需要注意的是pillow库安装用pip install pillow,导…

javaEE -14(10000字 JavaScript入门 - 1)

一:初始 JavaScript JavaScript (简称 JS)是世界上最流行的编程语言之一,它是一个脚本语言, 通过解释器运,主要在客户端(浏览器)上运行, 现在也可以基于 node.js 在服务器端运行. JavaScript 和 HTML 和 CSS 之间的关系: HTML…

Rellax.js,一款超酷的 JavaScript 滚动效果库

嗨,大家好,欢迎来到猿镇,我是镇长,lee。 又到了和大家见面的时间,今天和大家分享一款轻松实现视差滚动效果的 JavaScript 库——Rellax.js。无需大量的配置,即可为你的网站增色不少。 什么是Rellax.js&am…

simulinkveristandlabview联合仿真环境搭建

目录 开篇废话 软件版本 明确需求 软件安装 matlab2020a veristand2020 R4 VS2017 VS2010 软件安装验证 软件资源分享 开篇废话 推免之后接到的第一个让人难绷的活,网上开源的软件资料和成功的案例很少,查来查去就那么几篇,而且版本…

以pycharm为例,生成Python项目所需要的依赖库/包文档:requirements.txt

平时我们在编写或者使用别人的Python项目时,往往会看到一个文档requirements.txt,该文档是描述一个Python项目中的第三方库的名称以及版本。本文介绍导出python当前项目依赖包requirements.txt的操作步骤。 方法一:如果每个项目有对应的虚拟…

Java零基础——Elasticsearch篇

1.Elasticsearch简介 Elasticsearch是一个基于Lucene的一个开源的分布式、RESTful 风格的搜索和数据分析引擎。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中&#xf…

13. MySQL 日志

目录 错误日志 binlog日志 概述 日志格式 查询日志 慢查询日志 错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时&#…

用Rust刷LeetCode之26 删除有序数组中的重复项

26. 删除排序数组中的重复项[1] 难度: 简单 老的描述: 新的描述: 注意是 排序数组,非严格递增排列,即已经是排好序的,只不过有重复元素 func removeDuplicates(nums []int) int { if len(nums) 0 { return 0 } i : 0 for j : 1; j < len(nums); j { …