平时使用python,经常会使用到的知识点,可能懂得知道如何使用,但又没有全面的了解,下面总结下
一、if name == main作用
1】python中所有的模块都有一个内置name,这个属性值取决于如何应用这个模块;
2】把一个模块当程序运行,如cmd中运行py文件,则name的值为默认缺省值main
3】在项目程序中,可单独运行某一个py文件
if name == main: #来判断是否是直接运行的.py文件
main()
二、包中的init.py文件作用
毋庸置疑,最基本就是体现,文件夹与包的区别,不可删除;此外还有2点
1】做包与模块的初始化的工作;
2】进行批量导入包与模块
from Root.Pack1 import *
模糊导入的*指代的包是由init文件中的all控制的,也就是必须package才能使用模糊导入
3】 可以编写Python代码
(但不建议在init中写代码,尽量保证init.py简单)
三、各种下划线的理解
我们在定义一些变量与方法时,经常会用到下划线_ ,各种下划线_用处是怎样?
1】××× 开头与结尾两个下划线,系统定义名字
比如初始化方法 init;还有如下这些,内置好的魔法函数
2】__××× 开头两个下划线, 类中的私有变量名,
用于类的继承,防止被子类重写,类的对象和类的子类对象也不能访问
class Person():
def __init__(self):
self.name = "polo"
self.__age = 18
po = Person()
print(po.name)
print(po.__age)
print(po.__dir__()) # 查看这个对象的属性,name不变,__age变成_Person__age
结果
3】_××× 开头一个下划线
1)python中,_ 是有值的,指向最后一次执行的表达式
2)定义变量与方法,成为保护变量,只有类的对象和类的子类对象能访问,不能通过import module from * 导入
def my_func():
print("a123")
def _my_func():
print("a12345")
#引用这个模块,分别执行模块中的方法
from test import *
my_func()
#结果:a123
_my_func()
#结果:报错
此例子说明了_ 一个下划线与 __ 两个下划线的区别:
只有类的对象和类的子类对象能访问
#文件test_under.py中定义类
class Test:
def __init__(self):
self.name = 'lily'
self._pwd = 'a123' # 约定私有化
# self.__name = name # 将__两个下划线开头的属性进行自动转换变成_类名__属性名的形式
def say(self):
print(self.name)
def _mm(self):
print(self._pwd)
# 实例一个对象,访问两个属性和两个方法
import test_under
Na = test_under.Test()
Na.name
Na._pwd
Na.say()
Na._mm()
#结果
'lily'
'a123'
'lily'
'a123'
4】×××_ 尾部下划线
为了区分python关键词如def class name pass,在它们的后面添加一个下划线,一般不建议
网友评论