仅在另一个文件中导入功能

时间:2016-02-07 07:09:42

标签: python import

所以在我的file1.py中,我有类似的东西:

def run():
   # Do something

print "Hi"

现在我想在另一个文件中使用函数run()

from file1.py import run

但是,当我执行另一个文件时,它还会打印Hi。我该如何压制这个?

3 个答案:

答案 0 :(得分:2)

02-07 12:22:30.321 29092-29092/? I/art: Late-enabling -Xcheck:jni 02-07 12:22:30.341 29092-29102/? I/art: Debugger is no longer active 02-07 12:22:30.422 29092-29092/? D/SQLiteHandler: Fetching user from Sqlite: {username=Harsh} 02-07 12:22:30.422 29092-29092/? D/LoginActivity: already logged in 02-07 12:22:30.425 29092-29092/? I/Timeline: Timeline: Activity_launch_request id:com.myapp.mehul.login time:71360781 02-07 12:22:30.487 29092-29092/? D/MainMenu: painted again 02-07 12:22:30.490 29092-29092/? D/SQLiteHandler: Fetching user from Sqlite: {username=Harsh} 02-07 12:22:30.554 29092-29149/? D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 02-07 12:22:30.559 29092-29092/? D/Atlas: Validating map... 02-07 12:22:30.596 29092-29149/? I/Adreno-EGL: <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LA.BF.1.1.1_RB1.05.01.00.042.030_msm8974_LA.BF.1.1.1_RB1__release_AU () OpenGL ES Shader Compiler Version: E031.25.03.06 Build Date: 04/15/15 Wed Local Branch: mybranch9068252 Remote Branch: quic/LA.BF.1.1.1_rb1.19 Local Patches: NONE Reconstruct Branch: AU_LINUX_ANDROID_LA.BF.1.1.1_RB1.05.01.00.042.030 + NOTHING 02-07 12:22:30.597 29092-29149/? I/OpenGLRenderer: Initialized EGL, version 1.4 02-07 12:22:30.611 29092-29149/? D/OpenGLRenderer: Enabling debug mode 0 02-07 12:22:30.660 29092-29092/? I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@387f1572 time:71361016 02-07 12:22:31.898 29092-29092/com.myapp.mehul.login D/go to chat: was called 02-07 12:22:31.899 29092-29092/com.myapp.mehul.login I/Timeline: Timeline: Activity_launch_request id:com.myapp.mehul.login time:71362255 02-07 12:22:31.997 29092-29092/com.myapp.mehul.login I/System.out: now=71362353 02-07 12:22:31.997 29092-29092/com.myapp.mehul.login I/System.out: moviestart=71362353 02-07 12:22:31.997 29092-29092/com.myapp.mehul.login I/System.out: time=0 reltime=1850 02-07 12:22:32.007 29092-29092/com.myapp.mehul.login A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 29092 (app.mehul.login) 02-07 12:22:32.541 29092-29092/com.myapp.mehul.login W/app.mehul.login: type=1701 audit(0.0:302): auid=4294967295 uid=10250 gid=10250 ses=4294967295 subj=u:r:untrusted_app:s0 reason="memory violation" sig=11 子句中添加print "Hi"

当python导入模块时,它会执行其中包含的代码,以构建模块命名空间。如果您将模块作为主脚本运行,if __name__ == "__main__"将被分配给__name__,并且__main__子句中的代码将被执行。

由于您没有将脚本作为主脚本运行,if被分配给模块__name__(在本例中为__name__),因此此测试将不会成功并且file1语句不会被执行。

print

答案 1 :(得分:1)

您应该在以下功能之后加入:

这会运行程序

如果主要 ==&#34; 名称&#34;:#之前和之后&#39; main&#39;和&#39; name&#39;有两个under_scores! 打印&#34;嗨&#34;等...

答案 2 :(得分:0)

如果您不想打印Hi,只需从file1.py中删除

即可

如果要在调用run()时打印Hi,则将其缩进以使其属于run()函数。