Python中是否有等效于R语言package::function的调用方式?
解答
Python 原生不支持不写 import 语句就直接用pandas.DataFrame()形式调用第三方库的写法,和R的::调用逻辑有本质区别:
- R 里的
包名::函数名语法本身就带临时加载包的能力,只要包已经装在当前环境里,不用提前跑library(),写了就能直接用,执行的时候会自动把包加载进来。 - Python 的语法规则是固定的:所有用到的模块名必须先通过
import绑定到当前作用域,解释器才能识别。如果没导入pandas就直接写pandas.DataFrame(df),运行百分百报NameError: name 'pandas' is not defined的错。
你平常用的import pandas as pd本质是把导入的pandas模块绑到pd这个别名上,就算你不想用别名,就要写全pandas.DataFrame(),那也得在脚本开头加一行import pandas,绕不开显式导入这一步。
要是硬想实现“不在脚本开头写import也能直接写pandas.DataFrame”的效果,有两个非常不推荐的野路子:
- 改Python全局启动配置:找到当前Python环境的
sitecustomize.py启动文件,在里面提前写好import pandas,把pandas注入到全局内置命名空间。这样所有Python脚本启动的时候都会自动加载pandas,不用单独写import也能直接调用。但这么做会把代码的可移植性搞的稀碎,换个没做同样配置的环境代码直接跑崩,而且不管脚本用不用pandas,启动的时候都要加载一遍,平白拖慢启动速度。 - 用内置函数动态导入:直接在调用的地方写
df = __import__('pandas').DataFrame(df),本质这行已经干了import的活,只是没把import单独写在开头,可读性比标准写法差远了,除非是要做动态加载的特殊场景,不然完全没必要用。
写Python最好还是按PEP8规范来,所有依赖的import都统一写在脚本开头,显式写清楚依赖的代码不管是自己看还是别人接手都舒服,别为了省一行导入搞花活。
内容的提问来源于stack exchange,提问作者Nina van Bruggen
相关产品推荐
相关产品推荐

