我见过一些使用的代码示例和教程
def main():
# my code here
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
但为什么?是否有任何理由不在文件顶部定义您的函数,然后只在其下编写代码?即
def my_function()
# my code here
def my_function_two()
# my code here
# some code
# call function
# print(something)
Run Code Online (Sandbox Code Playgroud)
我只是想知道主要有没有押韵?
如何制作一个python文件来运行另一个?
例如,我有两个.py文件.我想要运行一个文件,然后让它运行另一个.py文件.
我有一个脚本,exit
如果它被采购我不希望它调用.
我想过检查是否$0 == bash
但如果脚本来自另一个脚本,或者如果用户从不同的shell中获取它,则会出现问题ksh
.
是否有可靠的方法来检测脚本是否来源?
我有一个我正在构建的Python程序,它可以用以下两种方式之一运行:第一种是调用"python main.py",它以友好的方式提示用户输入,然后通过程序运行用户输入.另一种方法是调用"python batch.py -file- ",它将通过所有友好的输入收集并通过程序一次性运行整个文件的输入值.
问题是,当我运行"batch.py"时,它会从"main.py"导入一些变量/方法/ etc,并在运行此代码时:
import main
Run Code Online (Sandbox Code Playgroud)
在程序的第一行,它立即出错,因为它试图在"main.py"中运行代码.
如何阻止Python运行我正在导入的"main"模块中包含的代码?
我是Python新手,但我有其他OOPS语言的经验.我的课程没有解释python中的主要方法.
请告诉我python中main方法的工作原理?我很困惑,因为我试图将它与Java进行比较.
def main():
# display some lines
if __name__ == "__main__": main()
Run Code Online (Sandbox Code Playgroud)
主要如何执行,为什么我需要这个奇怪if
的执行main
.当我删除时,我的代码终止而没有输出if
.
最小的代码 -
class AnimalActions:
def quack(self): return self.strings['quack']
def bark(self): return self.strings['bark']
class Duck(AnimalActions):
strings = dict(
quack = "Quaaaaak!",
bark = "The duck cannot bark.",
)
class Dog(AnimalActions):
strings = dict(
quack = "The dog cannot quack.",
bark = "Arf!",
)
def in_the_doghouse(dog):
print(dog.bark())
def in_the_forest(duck):
print(duck.quack())
def main():
donald = Duck()
fido = Dog()
print("- In the forest:") …
Run Code Online (Sandbox Code Playgroud) 我正在寻找与alert()
JavaScript 相同的效果.
我今天下午用Twisted.web写了一个简单的基于网络的翻译.你基本上通过一个表单提交一个Python代码块,然后客户端来抓取它并执行它.我希望能够制作一个简单的弹出消息,而不必每次都重写一大堆样板wxPython或TkInter代码(因为代码通过表单提交然后消失).
我试过tkMessageBox:
import tkMessageBox
tkMessageBox.showinfo(title="Greetings", message="Hello World!")
Run Code Online (Sandbox Code Playgroud)
但这会在背景中打开另一个带有tk图标的窗口.我不想要这个.我正在寻找一些简单的wxPython代码,但它总是需要设置一个类并进入一个应用程序循环等.在Python中没有简单,无需捕获的方法来制作消息框吗?
在Python中我有一个模块 myModule.py,我在其中定义了一些函数和一个main(),它接受一些命令行参数.
我通常从bash脚本中调用main().现在,我想将所有内容放入一个小包中,所以我想也许我可以将我的简单bash脚本转换为Python脚本并将其放入包中.
那么,我如何从 MyFormerBashScript.py 的main()函数实际调用 myModule.py 的main()函数?我甚至可以这样做吗?我如何传递任何参数?
我有以下代码:
import time
from fastapi import FastAPI, Request
app = FastAPI()
@app.get("/ping")
async def ping(request: Request):
print("Hello")
time.sleep(5)
print("bye")
return {"ping": "pong!"}
Run Code Online (Sandbox Code Playgroud)
如果我在本地主机上运行我的代码 - 例如http://localhost:8501/ping
- 在同一浏览器窗口的不同选项卡中,我得到:
Hello
bye
Hello
bye
Run Code Online (Sandbox Code Playgroud)
代替:
Hello
Hello
bye
bye
Run Code Online (Sandbox Code Playgroud)
我已经阅读过有关使用的内容httpx
,但仍然无法实现真正的并行化。有什么问题?
python asynchronous concurrent-processing python-asyncio fastapi
我正在尝试将日志记录添加到使用Flask的Web应用程序.
使用内置服务器(即python3 server.py
)托管时,日志记录有效.使用Gunicorn托管时,不会创建日志文件.
重现问题的最简单的代码是这样的:
#!/usr/bin/env python
import logging
from flask import Flask
flaskApp = Flask(__name__)
@flaskApp.route('/')
def index():
flaskApp.logger.info('Log message')
print('Direct output')
return 'Hello World\n'
if __name__ == "__main__":
logHandler = logging.FileHandler('/var/log/demo/app.log')
logHandler.setLevel(logging.INFO)
flaskApp.logger.addHandler(logHandler)
flaskApp.logger.setLevel(logging.INFO)
flaskApp.run()
Run Code Online (Sandbox Code Playgroud)
该应用程序使用:
gunicorn server:flaskApp -b :80 -w 4
--access-gfile /var/log/demo/access.log
--error-logfile /var/log/demo/error.log
Run Code Online (Sandbox Code Playgroud)
在对网站主页发出请求时,会发生以下情况:
我收到了预期的HTTP 200"Hello World \n"作为响应.
有一丝请求/var/log/demo/access.log
.
/var/log/demo/error.log
保持不变(只有引导事件).
终端中有"直接输出"线.
没有'/var/log/demo/app.log'.如果我在启动应用程序之前创建文件,则不会修改该文件.
注意:
每个人/var/log/demo
都可以访问(读,写,执行)目录,因此这不是权限问题.
如果我添加StreamHandler
为第二个处理程序,则终端和Gunicorn日志文件中仍然没有"日志消息"消息的痕迹.
Gunicorn是使用安装的pip3 install gunicorn
,所以不应该与Python版本有任何不匹配.
发生了什么?
Jupyter(iPython)笔记本当之无愧地被认为是一个很好的工具,用于对代码进行原型设计并以交互方式进行各种机器学习.但是当我使用它时,我不可避免地遇到以下问题:
假设我在jupyter中开发了一个整机学习管道,包括从各种来源获取原始数据,清理数据,特征工程和培训模型.现在用高效可读的代码从中制作脚本的最佳逻辑是什么?到目前为止,我曾经用几种方法解决它:
只需将.ipynb转换为.py,只需稍加修改,就可以将笔记本中的所有管道硬编码为一个python脚本.
制作一个包含许多函数的单个脚本(对于每一个或两个单元格大约有1个函数),尝试使用单独的函数组成管道的各个阶段,并相应地命名它们.然后通过指定所有参数和全局常量argparse
.
与point(2)相同,但现在将所有函数包装在类中.现在,所有全局常量以及每个方法的输出都可以存储为类属性.
使用多个脚本将笔记本转换为python模块.我没有试过这个,但我怀疑这是解决这个问题的最长方法.
我想,这种整体设置在数据科学家中非常普遍,但令人惊讶的是我无法找到任何有用的建议.
伙计们,请分享您的想法和经验.你有没有遇到过这个问题?你是怎么解决它的?
python ×9
module ×2
arguments ×1
asynchronous ×1
bash ×1
coding-style ×1
fastapi ×1
flask ×1
gunicorn ×1
jupyter ×1
ksh ×1
logging ×1
python-3.x ×1
readability ×1
refactoring ×1
tkinter ×1
wxpython ×1