gpt4 book ai didi

python - 如何正确使用Python模块

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:08 25 4
gpt4 key购买 nike

我的代码开始变得困惑不堪,所以我想为存储在其中的所有函数创建一个库(或我猜的模块)。从模块导入时,在我的代码中工作的大多数函数都会出现以下错误:

takes 1 positional argument but 2 were given

我创建了一个名为 mylib.py 的文件。

我在其中放置的第一个函数,在许多不起作用的函数中,就是这个:

def load(hist_indicator, data):   
mask1 = data['IndicatorName'].str.contains(hist_indicator)
dfdata = data[mask1]

filter = dfdata['Year'] > 1995
df = dfdata[filter]
return df

它所做的只是获取 pandas DataFrame 并过滤掉我需要的数据。如果该函数位于代码本身中,则该函数可以工作。我是这样使用的:

ind_internet = 'Internet users \(per 1'
internet = load(ind_internet, data)

但是,当我尝试从 mylib.py 使用它时,我收到了上述错误。尝试像这样使用它:

import mylib
ind_internet = 'Internet users \(per 1'
internet = mylib.load(ind_internet, data)

我希望你能让我知道我做错了什么。

编辑:

为了添加问题,下面是带有小示例的代码:

import pandas as pd

def load(hist_indicator, data):
mask1 = data['IndicatorName'].str.contains(hist_indicator)
dfdata = data[mask1]

filter = dfdata['Year'] > 1995
df = dfdata[filter]
return df

dataf = {'CountryName': ['France', 'Germany'],
'CountryCode': ['FRA', 'GER'],
'IndicatorName': ['Internet users (per 100)', 'GDP per capita (current US$)'],
'IndicatorCode' : ['MS.MIL.XPRT.KD','SP.POP.DPND.YG'],
'Year' : [2000,1983],
'Value' : [15.3,4322.27]
}

data = pd.DataFrame (dataf, columns = ['CountryName','CountryCode','IndicatorName','IndicatorCode','Year','Value'])

ind_internet = 'Internet users \(per 1'
internet = load(ind_internet, data)
internet

另外,编辑:我实际上并没有在代码中输入 import mylib.py,只是错误地在此处输入。

最佳答案

问题:
导入行 import mylib.py 不正确。您不需要文件扩展名 .py

解决方案
像这样的包设置:

package
|-mylib.py
|-test_import_mylip.py

然后在mylib.py中,

# package/mylib.py
def load(hist_indicator, data):
mask1 = data['IndicatorName'].str.contains(hist_indicator)
dfdata = data[mask1]

filter = dfdata['Year'] > 1995
df = dfdata[filter]
return df

然后从 test_import_mylib.py 导入并使用 mylib.load

# test_import_mylib.py
import mylib
import pandas as pd

data = pd.read_csv('path/to/df.csv')
ind_internet = 'Internet users \(per 1'

internet = mylib.load(ind_internet, data)

关于python - 如何正确使用Python模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57502619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com