A. 如何理解python中的main函数
这个脚本被执行的时候,__name__ 值就是 __main__ ,才会执行 main()函数 如果这个脚本是被 import 的话,__name__的值不一样。main()函数就不会被调用。 这个句子用来写既能直接运行,又能给其他python程序import,提供库调用的脚本
B. python新手求解
第一个错:是 if__name__=='__main__' 后边一定是 '__main__' 而不是文件名称
2.是print(os.getcwd()) 而不是python()
if __name__ == '__main__':的作用
一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此if __name__ == 'main':的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。举例说明如下:
直接执行
只输出了第一行字符串。即,if __name__=="__main__": 之前的语句被执行,之后的没有被执行。
C. 两个同级目录里面 的python 相互import 错误
tim@crunchbang:~/workspace/learn-pymole$ tree
.
├── main.py
├── mole_a
│ ├── a1.py
│ └── __init__.py
└── mole_b
├── b1.py
└── __init__.py
tim@crunchbang:~/workspace/learn-pymole$ cat mole_b/b1.py
import mole_a.a1
def func_b1():
print "I'm in mole_b/b1, I'm func_b1()"
print "now calling mole_a"
mole_a.a1.func_a1()
tim@crunchbang:~/workspace/learn-pymole$ python mole_b/b1.py
Traceback (most recent call last):
File "mole_b/b1.py", line 3, in <mole>
import mole_a.a1
ImportError: No mole named mole_a.a1
tim@crunchbang:~/workspace/learn-pymole$ cat main.py
from mole_b import b1
b1.func_b1()
tim@crunchbang:~/workspace/learn-pymole$ python main.py
I'm in mole_b/b1, I'm func_b1()
now calling mole_a
I'm in mole_a/a1, I'm func_a1()
tim@crunchbang:~/workspace/learn-pymole$
D. Python语言中用来引入函数库的保留A.include B. import C. main D.
b import 是python引入函数库
include是c语言引入
main是c语言主函数
E. linux服务器下python的import问题
from handle import Handle
如果日志还是报错没有模块
那就安装一个
# pip install handle
Collecting handle
/usr/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Downloading handle-0.1.0.tar.gz
Collecting click==6.6 (from handle)
Downloading click-6.6-py2.py3-none-any.whl (71kB)
100% |████████████████████████████████| 73kB 114kB/s
Collecting colorlog==2.7.0 (from handle)
Downloading colorlog-2.7.0-py2.py3-none-any.whl
Collecting jac==0.15.3 (from handle)
Downloading jac-0.15.3.zip
Requirement already satisfied (use --upgrade to upgrade): jinja2==2.8 in /usr/local/lib/python2.7/site-packages (from handle)
Collecting livereload==2.4.1 (from handle)
Downloading livereload-2.4.1-py2-none-any.whl
Collecting pygments==2.1.3 (from handle)
Downloading Pygments-2.1.3-py2.py3-none-any.whl (755kB)
F. python遇到问题 想import一个不在当前路径下的.py程序
python 在导入包的时候,搜索的顺序是:当前路径 (以及从当前目录指定的sys.path),然后是PYTHONPATH,然后是python的安装设置相关的默认路径。
所以,你只需要在你import语句前面,把login文件夹加到sys.path即可
importsys
sys.path.append("login文件夹的绝对路径")
importlogin_main
G. python怎么导入同一包的模块
一、何为模块
1.一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。
2.模块目的和函数,对象等一样,是为了代码的复用性而存在的。即一个py程序写了很多功能,也可以被其他py程序调用。被调用后被作为模块,此时会产生一个pyc的文件即为这个模块的缓存文件,相当于编译了模块文件使该py模块被调用的速度变快。一个大的项目一个人肯定是不行的,所以模块也为程序员相互间的合作提供了便利。
二、模块妙用
1.import
只需要在py程序开头加上import 文件名(不能有.py后缀)。例如,模块的文件名是span.py,那么只需在自己的py程序加import span。
2. import可以在程序的任意位置调用,但一次调用后会驻留内存,下次再调用会直接调用内存中的模块(python的优化)。
3.个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,这样我们在编写自己的模块时,就不用担心我们定义在自己模块中全局变量会在被导入时,与使用者的全局变量冲突。
print('from the spam.py')
money=1000def read1(): print('spam->read1->money',1000)def read2(): print('spam->read2 calling read')
read1()def change(): global money
money=0
支持tab自动补全