Python常用函数
Python hasattr() 函数
hasattr() 函数用来判断某个类实例对象是否包含指定名称的属性或方法。该函数的语法格式如下:
hasattr(obj, name)
其中 obj 指的是某个类的实例对象,name 表示指定的属性名或方法名。同时,该函数会将判断的结果(True 或者 False)作为返回值反馈回来。
例如:
class CLanguage:
def __init__ (self):
self.name = "百度一下"
self.add = "wwww.baidu.com"
def say(self):
print("我正在学Python")
clangs = CLanguage()
print(hasattr(clangs,"name"))
print(hasattr(clangs,"add"))
print(hasattr(clangs,"say"))
程序输出如下:
True
True
True
显然,无论是属性名还是方法名,都在hasattr() 函数的匹配范围内。因此,我们只能通过该函数判断实例对象是否包含该名称的属性或方法,但不能精确判断,该名称代表的是属性还是方法。
Python getattr() 函数
getattr() 函数获取某个类实例对象中指定属性的值。没错,和hasattr() 函数不同,该函数只会从类对象包含的所有属性中进行查找。
getattr() 函数的语法格式如下:
getattr(obj, name[, default])
其中,obj 表示指定的类实例对象,name 表示指定的属性名,而 default 是可选参数,用于设定该函数的默认返回值,即当函数查找失败时,如果不指定 default 参数,则程序将直接报 AttributeError 错误,反之该函数将返回default 指定的值。
例如:
class CLanguage:
def __init__ (self):
self.name = "百度一下"
self.add = "www.baidu.com"
def say(self):
print("我正在学Python")
clangs = CLanguage()
print(getattr(clangs,"name"))
print(getattr(clangs,"add"))
print(getattr(clangs,"say"))
print(getattr(clangs,"display",'nodisplay'))
程序执行结果为:
百度一下
www.baidu.com
<bound method CLanguage.say of <__main__.CLanguage object at 0x000001BC2E5B6D90>>
nodisplay
可以看到,对于类中已有的属性,getattr() 会返回它们的值,而如果该名称为方法名,则返回该方法的状态信息;反之,如果该s名称不为类对象所有,要么返回默认的参数,要么程序报AttributeError 错误。
Python setattr() 函数
setattr() 函数的功能相对比较复杂,它最基础的功能是修改类实例对象中的属性值。其次,它还可以实现为实例对象动态添加属性或者方法。
setattr() 函数的语法格式如下:
setattr(obj, name, value)
首先,下面例子演示如何通过该函数修改某个类实例对象的属性值:
class CLanguage:
def __init__ (self):
self.name = "百度一下"
self.add = "www.baidu.com"
def say(self):
print("我正在学Python")
clangs = CLanguage()
print(clangs.name)
print(clangs.add)
setattr(clangs,"name","必应")
setattr(clangs,"add","www.bing.com")
print(clangs.name)
print(clangs.add)
程序运行结果为:
百度一下
www.baidu.com
必应
www.bing.com
甚至利用 setattr() 函数,还可以将类属性修改为一个类方法,同样也可以将类方法修改成一个类属性。例如:
def say(self):
print("我正在学Python")
class CLanguage:
def __init__ (self):
self.name = "百度一下"
self.add = "www.baidu.com"
clangs = CLanguage()
print(clangs.name)
print(clangs.add)
setattr(clangs,"name",say)
clangs.name(clangs)
程序运行结果为:
百度一下
www.baidu.com
我正在学Python
显然,通过修改 name 属性的值为 say (这是一个外部定义的函数),原来的 name 属性就变成了一个 name() 方法。
使用setattr() 函数对实例对象中执行名称的属性或方法进行修改时,如果该名称查找失败,Python 解释器不会报错,而是会给该实例对象动态添加一个指定名称的属性或方法。例如:
def say(self):
print("我正在学Python")
class CLanguage:
pass
clangs = CLanguage()
setattr(clangs,"name","百度一下")
setattr(clangs,"say",say)
print(clangs.name)
clangs.say(clangs)
程序执行结果为:
百度一下
我正在学Python
可以看到,虽然 CLanguage 为空类,但通过setattr() 函数,我们为 clangs 对象动态添加了一个 name 属性和一个 say() 方法。
Python os.path 模块常见函数用法
方法 | 说明 |
---|
os.path.abspath(path) | 返回 path 的绝对路径。 | os.path.basename(path) | 获取 path 路径的基本名称,即path 末尾到最后一个斜杠的位置之间的字符串。 | os.path.commonprefix(list) | 返回 list (多个路径)中,所有 path 共有的最长的路径。 | os.path.dirname(path) | 返回 path 路径中的目录部分。 | os.path.exists(path) | 判断 path 对应的文件是否存在,如果存在,返回 True ;反之,返回 False 。和 lexists() 的区别在于,exists() 会自动判断失效的文件链接(类似 Windows 系统中文件的快捷方式),而 lexists() 却不会。 | os.path.lexists(path) | 判断路径是否存在,如果存在,则返回 True ;反之,返回 False 。 | os.path.expanduser(path) | 把 path 中包含的 “~” 和 “~user” 转换成用户目录。 | os.path.expandvars(path) | 根据环境变量的值替换 path 中包含的 “
n
a
m
e
"
和
"
name" 和 "
name"和"{name}”。 | os.path.getatime(path) | 返回 path 所指文件的最近访问时间(浮点型秒数)。 | os.path.getmtime(path) | 返回文件的最近修改时间(单位为秒)。 | os.path.getctime(path) | 返回文件的创建时间(单位为秒,自 1970 年 1 月 1 日起(又称 Unix 时间))。 | os.path.getsize(path) | 返回文件大小,如果文件不存在就返回错误。 | os.path.isabs(path) | 判断是否为绝对路径。 | os.path.isfile(path) | 判断路径是否为文件。 | os.path.isdir(path) | 判断路径是否为目录。 | os.path.islink(path) | 判断路径是否为链接文件(类似 Windows 系统中的快捷方式)。 | os.path.ismount(path) | 判断路径是否为挂载点。 | os.path.join(path1[, path2[, ...]]) | 把目录和文件名合成一个路径。 | os.path.normcase(path) | 转换 path 的大小写和斜杠。 | os.path.normpath(path) | 规范 path 字符串形式。 | os.path.realpath(path) | 返回 path 的真实路径。 | os.path.relpath(path[, start]) | 从 start 开始计算相对路径。 | os.path.samefile(path1, path2) | 判断目录或文件是否相同。 | os.path.sameopenfile(fp1, fp2) | 判断 fp1 和fp2 是否指向同一文件。 | os.path.samestat(stat1, stat2) | 判断 stat1 和 stat2 是否指向同一个文件。 | os.path.split(path) | 把路径分割成 dirname 和 basename ,返回一个元组。 | os.path.splitdrive(path) | 一般用在 windows 下,返回驱动器名和路径组成的元组。 | os.path.splitext(path) | 分割路径,返回路径名和文件扩展名的元组。 | os.path.splitunc(path) | 把路径分割为加载点与文件。 | os.path.walk(path, visit, arg) | 遍历path ,进入每个目录都调用 visit 函数,visit 函数必须有 3 个参数(arg, dirname, names) ,dirname 表示当前目录的目录名,names 代表当前目录下的所有文件名,args 则为 walk 的第三个参数。 | os.path.supports_unicode_filenames | 设置是否可以将任意 Unicode 字符串用作文件名。 |
Python os.environ 模块环境变量详解
在 python 中通过 os.environ 可以获取有关系统的各种信息
1、简介
通过 os.environ 获取环境变量,什么是环境变量呢?环境变量是程序和操作系统之间的通信方式。有些字符不宜明文写进代码里,比如数据库密码,个人账户密码,如果写进自己本机的环境变量里,程序用的时候通过 os.environ.get() 取出来就行了。这样开发人员本机测试的时候用的是自己本机的一套密码,生产环境部署的时候,用的是公司的公共账号和密码,这样就能增加安全性。os.environ 是一个字典,是环境变量的字典。例如“HOME” 是这个字典里的一个键,如果有这个键,返回对应的值,如果没有,则返回 None
2、key字段详解
os.environ.keys() 主目录下所有的key如下所示:
>>>import os
>>>os.environ.keys()
KeysView(environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\Administrator\\AppData\\Roaming', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'DESKTOP-N5CU52O', 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 'CONDA_DEFAULT_ENV': 'base', 'CONDA_PREFIX': 'D:\\Anaconda', 'CONDA_PROMPT_MODIFIER': '(base) ', 'CONDA_SHLVL': '1', 'DATAGRIP': 'D:\\DataGrip 2022.3\\bin;', 'DATASPELL': 'D:\\DataSpell 2022.3\\bin;', 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\Administrator', 'IDEA_INITIAL_DIRECTORY': 'D:\\PyCharm 2022.3\\bin', 'LANG': 'en_US.UTF-8', 'LANGUAGE': '', 'LC_ALL': 'en_US.UTF-8', 'LOCALAPPDATA': 'C:\\Users\\Administrator\\AppData\\Local', 'LOGONSERVER': '\\\\DESKTOP-N5CU52O', 'NUMBER_OF_PROCESSORS': '12', 'ONEDRIVE': 'C:\\Users\\Administrator\\OneDrive', 'OS': 'Windows_NT', 'PATH':
3、os.environ.get() 用法
os.environ 是一个字典,是环境变量的字典,可以通过 get 方法获取键对应的值(注意 os.environ 的类型并不是 <class ‘dict’>,不是所有字典的函数都能用)
os.environ.get() 是 python 中 os 模块获取环境变量的一个方法,如果有这个键,返回对应的值,如果没有,则返回 None
例如:
import os
print(os.environ.get("HOME"))
也可以设置默认值,当键存在时返回对应的值,不存在时,返回默认值
print(os.environ.get("HOME", "default"))
4、环境变量的用法
设置系统环境变量
os.environ['环境变量名称']='环境变量值'
os.putenv('环境变量名称', '环境变量值')
os.environ.setdefault('环境变量名称', '环境变量值')
修改系统环境变量
os.environ['环境变量名称']='新环境变量值'
获取系统环境变量
os.environ['环境变量名称']
os.getenv('环境变量名称')
os.environ.get('环境变量名称', '默认值')
删除系统环境变量
del os.environ['环境变量名称']
del(os.environ['环境变量名称'])
判断系统环境变量是否存在
'环境变量值' in os.environ
|