使用in遍历file对象时,与使用file.readline()是一个道理。
filename = "a.txt"
file = open(filename)
for line in file:
print(line)
12312 1432 4354
12312213123
hhtyrhjtyuj
dsafdsafasdf
例如:包路径为:gensim.models.word2vec.Word2Vec
word2vec是py文件
Word2Vec是类
import gensim.models.Word2Vec
# 也可以使用全包名进行导入
import gensim.models.word2vec.Word2Vec
注意:至少路径是py文件的父路径。也就是py文件可省略。
is与的关系与is not与!=的关系一样,所以只说is与
is与==的区别:
a、假如比较的两个变量,指向的都是不可变的类型 ( int, str, tuple等 ) , 那么is, is not 和 ==, != 是完全等价的。
b、假如对比的两个变量,指向的是可变的类型(list,dict等),则两者是有区别的。因为不可变类型存在常量区中所以id相同,对于变量存在堆中id是不同的。
python中申请二位数组不像java或c++可以直接申请大小,python中 [int] 就是访问没其他意思了。
#1*n,因为最外层里面有一个list,list可以存放n个
a = [[]]
#3*n,三行n列
a = [[],[],[]]
#等价于a = [[],[],[]]。这个操作是这个的内部乘有几个
a = [[]]*3
#等价于a = [ [[]], [[]], [[]] ],一个数组里面的每个元素是一个二维数组(1*n的)
a = [ [[]] ]*3
#当然这个内一层啥也没,所以等价于a = [[]]
a = [[]*3]
但是这种方法会出现浅拷贝现象,也就是你往里面附一个值它的其他行也会跟着改变。
如:
a = [[1]*3]*2
a[1][1] = 8
print(a)
[[1, 8, 1], [1, 8, 1]]
所以应该运用列表解析进行创建。
如:
a = [[1]*3 for i in range(2)]
a[1][1] = 8
print(a)
[[1, 1, 1], [1, 8, 1]]
() for i in range(x)
#或
() for i in iterator
'''
从列表或迭代器中获得i,进行for前的()运算并返回。从上边的例子是,从0~1每次返回一个[1]*3
下面是其他应用例子
'''
[i+1 for i in range(10)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#i+1 for i in range(10) 返回的是一个发生器
数组的+是将两个数组按照第一维度合并成一个数组。而nd的+是将两个数组按照各个维度相对应的数分别相加成一个数组。
也就是说数组的+是合并,nd的+是真的加,而且数组+数组不用考虑维度问题,因为直接用第一维度合并了,元素可以是任意类型。
1、字符串前加 u
例:u"我是含有中文字符组成的字符串。"
作用:
后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。
2、字符串前加 r
例:r"\n\n\n\n” 表示一个普通生字符串 \n\n\n\n,而不表示换行了。
作用:
去掉反斜杠的转移机制。
(特殊字符:即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。 )
应用:
常用于正则表达式,对应着re模块。
3、字符串前加 b
例: response = b’Hello World!’ b’ ’ 表示这是一个 bytes 对象
作用:
b" "前缀表示:后面字符串是bytes 类型。
用处:
网络编程中,服务器和浏览器只认bytes 类型数据。
如:send 函数的参数和 recv 函数的返回值都是 bytes 类型
附:
在 Python3 中,bytes 和 str 的互相转换方式是
str.encode(‘utf-8')
bytes.decode(‘utf-8')
4、字符串前加 f
import time
t0 = time.time()
time.sleep(1)
name = 'processing'
以 f开头表示在字符串内支持大括号内的python 表达式
print(f'{name} done in {time.time() - t0:.2f} s')
输出:
processing done in 1.00 s
python中的父子类分界不是那么明确,因为在子类构造函数中调用父类构造函数时可以传递子类的self,这样父类中就知道子类函数的存在了。但是在Java中并不可以因为Java是一种强制类型的语言,this并不是一个数据实例所以实现不了父类调用子类中函数的情况。
例如:
class A:
def __init__(self):
a = 0;
def port(self):
self.out();
class B(A):
def __init__(self):
A.__init__(self)
def out(self):
print(111)
b = B()
b.port()
#在python中这并不出错