从Python中的另一个文件导入不同的函数?

2024-04-26 22:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python主文件,它是通过googleappengine托管的,但是,我的所有函数都是在同一个类中定义的。对于文件管理来说,这显然没有那么干净,也没有那么有用。如何将所有函数放在不同的文件中,然后导入该文件以使用这些函数?你知道吗

这是我的基本日期验证文件:

import webapp2

def valid_year(year):
    if (year.isdigit()):
        year = int(year)
        if (year < 2030 and year > 1899):
            return True

def valid_day(day):
    if (day.isdigit()):
        day = int(day)
        if (day <= 31 and day > 0):
            return True

def valid_month(month):
    months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',
                        'September', 'October', 'November', 'December']
    month_abbvs = dict((m[:3].lower(), m) for m in months)
        if month:
            short_month = month[:3].lower()
            return month_abbvs.get(short_month)

form="""
<form method = "post">

    <label>Month</label>
    <input type = "text" name = "month">

    <label>Day</label>
    <input type = "text" name = "day">

    <label>Year</label>
    <input type = "text" name = "year"><br>

    <input type="submit" value="Validate Date">
</form>
"""

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.write(form)

    def post(self):
        Month_Test = valid_month(self.request.get('month'))
        Day_Test = valid_day(self.request.get('day'))
        Year_Test = valid_year(self.request.get('year'))

        if not (Month_Test and Day_Test and Year_Test):
            self.response.out.write(form)
        else:
            self.response.out.write("Thanks! That's a totally valid day!")


application = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

Tags: and文件testselfforminputgetif
1条回答
网友
1楼 · 发布于 2024-04-26 22:30:35

您可以将所有与日期相关的方法移到名为date_utils.py的文件中,并将当前文件中的date_utils导入为:

import date_utils

在每个方法调用中,用模块名限定它。例如:

Month_Test = valid_month(self.request.get('month'))

现在变成:

Month_Test = date_utils.valid_month(self.request.get('month'))

请注意,这种在其他文件中导入方法的方法只有在两个文件位于同一目录中时才起作用。如果您的项目结构类似于:

my_project
|__utils
|  |__file_utils.py
|__my_module
   |__main.py

如果要将file_utils中的方法包含在main中,则必须确保my_projectPYTHONPATH中。只有这样,您才能在main中执行导入,如import utils.file_utilsfrom utils.file_utils import read_file。你知道吗

希望这有帮助。你知道吗

相关问题 更多 >