大数跨境

Python开发,请避开这些坑!

Python开发,请避开这些坑! 依元素科技
2018-09-20
2
导读:相比于其他语言,Python的语法比较简单易学,但一旦不注意细节,刚入门的新手很容易就会掉进语法错误的坑里....

相比于其他语言,Python的语法比较简单易学,但一旦不注意细节,刚入门的新手很容易就会掉进语法错误的坑里。



1. 忘记写冒号


在 if、elif、else、for、while、class、def 语句后面忘记添加“:”


if spam == 42
print('Hello!')


2. 误用 “=” 做等值比较


“=”是给变量赋值,“==”才是判断两个值是否相等:


score = 60
if score = 60:
print ('passed')


改正:


score = 60
if score == 60:
print ('passed')


3. 变量没有定义:


if age >= 18:
print ('adult')
print ('END')


会导致:NameError: name ‘age’ is not defined.


改正:


age = 20
if age >= 18:
print ('adult')
print ('END')


4. 字符串与非字符串连接


错误:


num = 12
print('I have ' + num+ ' apples.')


非字符串和字符串连接的时候,要将非字符串转换为字符串类型之后才能连接,改正:


num = 12
print('I have ' + str(num)+ ' apples.')


5. 列表的索引位置


习惯性地认为列表元素的位置是从1开始的:


spam = ['cat', 'dog', 'mouse']
print(spam[3])


列表元素的位置是从0开始的,所以第3个元素“mouse”的索引位置是2,改正:


spam = ['cat', 'dog', 'mouse']
print(spam[2])


6. 使用自增 “++” 自减 “—”


学过c语言或者Java的人会很习惯使用i++或者i—,但在Python中是没有自增自减操作符的:


spam = 0
spam++


这时可以使用 “+=” 来代替 “++”,改正:


spam = 0
spam += 1


7. 使用关键字命名变量


Python 3中一共33个关键字:


False,None,True,and,as,assert,break,class,continue,def,del,elif,else,except,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,or,pass,raise,return,try,while,with,yield


自定义变量时,变量名不能和这些关键字重复。


8. 索引元素位置时忘记调用 len 方法


通过索引位置来获取列表元素时,忘记要先使用 len 函数来获取列表的长度


fam = ['dad', 'mom', 'son']

for i in range(fam):

print(fam[i])


改正:


fam = ['dad', 'mom', 'son']

for i in range(len(fam)):

print(fam[i])


9. 函数中的局部变量赋值前被使用


num = 42

def myFunction():
print(num)
num = 100

myFunction()


第一行定义了一个全局变量num,同时函数myFunction( )也定义了一个同名的局部变量,但程序执行时是先查找局部变量的,所以在函数中找到num之后就不到外部查找了,此时就会出现print的时候变量num还没赋值的错误。


10. 缩进问题


和其他语言的语法最大的不同就是,Python不能用括号来表示语句块,也不能用开始或结束标志符来表示,而是靠缩进来区分代码块的。


常见的错误用法:


(1)


print('Hello')
print('World!')


错误是第二行的缩进会导致两个print语句是包含和被包含的关系,但他们两者是属于同一个代码块的,所以应该写成;


print('Hello')
print('World!')


(2)


if spam == 42:
print('Hello')
print('World!')


错误是第三行的缩进,改正的方法有两种,一是如果两个print语句是属于同一代码块的,应该改正为


if spam == 42:
print('Hello')
print('World!')


二是如果第三行的print语句是和if语句是同一级的,则改正为


if spam == 42:
print('Hello')

print('World!')


(3)在Python 3中,缩进的时候,不能Tab和空格混用,每个缩进层次应该选择只使用Tab或者只使用空格。



* 本文转载自:机器学习算法与Python学习,版权归原作者所有,如涉及版权,请联系小编删除。


PYNQ项目介绍

PYNQ是赛灵思公司的一个开源项目,可以通过ZYNQ(SoC)轻松的设计嵌入式系统。


使用Python语言和库,设计人员可以利用ZYNQ中的可编程逻辑和Arm处理器的优势来构建强大和令人兴奋的嵌入式系统。


使用者可以利用PYNQ-Z2平台创建下列的高性能嵌入式应用

  • 并行硬件执行

  • 高帧率的视频处理

  • 硬件加速算法

  • 实时信号处理

  • 高带宽IO

  • 低延迟控制

PYNQ-Z2 开发板是Xilinx 大学计划支持PYNQ开源框架的第二代最新开发平台,根据第一代的反馈做功能升级。PYNQ开源框架可以使嵌入式编程用户在无需设计可编程逻辑电路的情况下充分发挥Xilinx Zynq SoC的功能。PYNQ-Z2除支持传统ZYNQ开发方式外,还可支持Python进行SoC编程,并且代码可直接在PYNQ-Z2上进行开发和调试。可编程逻辑电路以硬件库的形式导入并且可以通过API编程,这种方式基本上与软件库的导入和编程方式相同。



我们欢迎关心新工科建设、双一流建设的老师加入Xilinx大学计划,我们有一系列的培养方案改革案例、最新课改成果、可以供您参考,关于联合实验室建设、课程改革、Vivado软件捐赠、校企共建课程、FPGA师资培训、学生竞赛、学生讲座等联系我们。


联系方式:edu@e-elements.com


E-Elements

FPGA我们是认真的!

【声明】内容源于网络
0
0
依元素科技
FPGA 我们是认真的
内容 510
粉丝 0
依元素科技 FPGA 我们是认真的
总阅读828
粉丝0
内容510