我对python import语句有些奇怪.
假设我有一个如下所示的文件结构:
foo\
__init__.py
bar.py
os.py
Run Code Online (Sandbox Code Playgroud)
bar.py中的代码(其他文件为空)
import os
print os.__file__
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我跑python -m foo.bar,它打印
foo/os.pyc
Run Code Online (Sandbox Code Playgroud)
但是,当我将direcotry更改为foo并运行时python -m bar,它会打印出来
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc
Run Code Online (Sandbox Code Playgroud)
我运行脚本的两种方式有什么区别?
总之,Python用于导入模块的顺序是什么?
从官方文件中,我发现了几个关于这个问题的文字(他们让我更加困惑)
解释器首先搜索具有该名称的内置模块.如果未找到,则会在变量sys.path给出的目录列表中搜索名为spam.py的文件.
此列表的第一项path [0]是包含用于调用Python解释器的脚本的目录.如果脚本目录不可用(例如,如果以交互方式调用解释器或者从标准输入读取脚本),path [0]是空字符串,它指示Python首先搜索当前目录中的模块.
事实上,这样的引用是如此常见,以至于在查看标准模块搜索路径之前,import语句首先在包含包中查找.
...
如果在当前包(当前模块是子模块的包)中找不到导入的模块,则import语句将查找具有给定名称的顶级模块.
该-i标志被描述为"即使没有附加也保持STDIN打开",但Docker运行参考也说:
如果未指定-a,则Docker将附加所有标准流.
所以,默认情况下,stdin是附加的,但是没有打开?我认为STDIN连接但没有打开时没有任何意义,对吧?
我有一个UITableView(让我们称之为tbl_A)在一个表格视图单元格中,其高度是动态的并且设置为UITableViewAutomaticDimension.tbl_A的单元格高度也是动态的,我知道tbl_A的数据不会太多.所以我希望tbl_A被滚动禁用,其frame.size等于其内容大小.我试图设置tbl_A的frame.size.height = tbl_A.contentSize.height,遗憾的是,高度是错误的.
顺便说一句,我没有必要UITableView用来完成这项任务.我只是想以一种方式显示所有数据.有什么建议?
我是集群新手.我看不出这两个选项之间的区别?我认为广告addr被其他节点用于彼此通信,并且监听addr被主机用于加入集群.所以我认为这两个addr总是一样的.我对吗?
docker ×2
docker-swarm ×1
import ×1
ios ×1
markdown ×1
module ×1
python ×1
python-2.7 ×1
swift ×1
uitableview ×1