python学习日记(1)

今天开始读代码。遇到了一些疑惑,通过查资料解决了,列出如下:

pyc文件:是py文件编译后生成的字节码文件(byte code)。pyc文件经过python解释器最终会生成机器码运行。一般商业软件发布都是发布这种文件。pyc文件像py文件一样,也可以执行,但是就少了解释这个步骤,会快一点点。


__all__ :只对import *起作用,对from XXX import XXX不起作用。它是一个string元素组成的list变量,定义了当你使用 from <module> import * 导入某个模块的时候能导入的符号(这里代表变量,函数,类等)。

from .codingfunctions import*
from .decodingfunctions import*
from .ldpcmatrices import*
from .ldpcalgebra import BinaryProduct, InCode, BinaryRank
from . import ldpc_images, ldpc_sound


__all__ = ['BinaryProduct', 'InCode', 'BinaryRank','Coding_random','Coding'
			, 'Decoding_logBP', 'Decoding_BP','DecodedMessage','RegularH',
			'CodingMatrix','CodingMatrix_systematic']

如上面代码中,__all__列表中列出的变量名可以被导入(import *),除此之外的变量不被导入。

上述__init__文件中,各个子文件的模块(codingfunctions...)中的变量(函数)coding,coding_random被导入。


如何添加本地模块,有两种方法,第一种是将模块放入 site-packages 地址中,即所有包的所在路径(如numpy,tensorflow,keras 等等)第二种是在一个package下,可以引入相同父节点下的文件,如下图:

参考链接https://www.cnblogs.com/Emerald/p/4827238.html

总结:当导入模块时,解释器按照sys.path中的路径寻找模块:首先是当前目录下'',然后是lib里的相关目录。所以我们可以把模块放在这些路径下。


如何索引数组?参考如下代码段:

model.fit(x_train[1:10001,:,:], y_train[1:10001], # 通过数组索引来改变训练样本量
          batch_size=batch_size,
          epochs=epochs,
          verbose=1,    # 展示训练过程参数变化
          validation_data=(x_test, y_test))

print(x_train.shape) #(60000, 28, 28)
print(y_train.shape) #(60000,)

引用x_train中的数据时,我们只想引用前10000个图像怎么办?可以在图像序列维度上用1:10001来限定我们想要的数据。注意,第10001个数据不会被引用。并且,后面的图片像素维度我们不用写成1:28,因为要引用全部的像素点,所以就用:代替啦。

为什么在y_train.shape的打印值里会有逗号呢?这是因为shape的值是一个元组(tuple)类型的,python解释器会把(60000)当作一个算数表达式来处理,它的结果就是一个int型对象。为了和只有单个元素的元组区分,python规定要在元素后面带上一个逗号,例如d=(60000,)。参考链接

全局变量和局部变量

局部变量指函数内的变量,在函数外失效。因此不同函数内的变量名可以一样,互不干扰。

全局变量是函数外定义的变量,函数内可以引用,但过多的引用则会增强函数间的耦合性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值