python(三):python语法学习与报错记录

        因为看过N个教程了,所以这里只记录python语法学习的一些细节

一 符号

1.1 //与/含义

        //:表示整数除法

        /:表示浮点数除法,返回浮点数结果

1.2 注释

单行注释:#

多行注释和行内注释:'''或""",行内注释示例如下

plt.figure(figsize=(12,6))  # 定义图的大小
#行内注释示例
plt.figure('''figsize=(12,6)''')  # 定义图的大小

二 路径模块pathlib、sys.path、os.path

2.1 Path(os.path.relpath(path_1, path_2))

        python文件名称为learn_test.py

        文件地址为:/home/meng/deeplearning/yolov5/learn_test.py

        运行指令:

python learn_test.py
import os
import sys
from pathlib import Path  #path将str转换成path对象,使字符串路径易于操作

FILE = Path(__file__).resolve() #__file__:当前路径,.resolve():获取绝对路径
# print(FILE)----打印输出:/home/meng/deeplearning/yolov5/learn_test.py

ROOT = FILE.parents[0]  # YOLOv5 root directory    #.parents():路径的父目录
# print(ROOT)----打印输出:/home/meng/deeplearning/yolov5

if str(ROOT) not in sys.path:  #sys.path是python的搜索模块的路径集,是一个list
    sys.path.append(str(ROOT))  # add ROOT to PATH  #sys.path.append():添加相关路径,但在退出python环境后自己添加的路径就会消失

#Path.cwd():返回当前工作目录,即运行脚本所在的全局目录:/home/meng/deeplearning/yolov5/learn_test.py
ROOT = Path(os.path.relpath(ROOT, Path.cwd()))  # relative
# print(ROOT)----打印输出:.

        根据上面程序运行结果,Path(os.path.relpath(path_1, path_2))应该输出的是path_2相对path_1的相对路径,上面程序中path_1=/home/meng/deeplearning/yolov5,path_2=/home/meng/deeplearning/yolov5/learn_test.py,即得结果为"."

三 math函数

3.1 math.ceil()

        返回大于括号里浮点数的最大小数

python(三):python语法学习与报错记录_第1张图片

3.2 math.round()

        取整函数,默认取整到整数位,取整到几位小数需要加参数,如下所示的“3”:

round(1.2345678,3)
(yolov5py37) meng@meng:~/xxx$ python
Python 3.7.11 (default, Jul 27 2021, 14:32:16) 
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
>>> round(1.2345678,3)
1.235
>>> 

         取整规则与python版本有关,py2和py3有较大差异,分析见:python中round的用法_python中round函数如何使用_weixin_39926104的博客-CSDN博客

四 打印输出

4.1 print函数

        当变量名称和变量分开打印时:

    print("cp_int:")
    print(cp_int)

        结果为:

meng@meng:~/Downloads/论文/张正友标定法/Calibration_ZhangZhengyou_Method-master$ python calib_RGB.py 
cp_int:
[[  0.   0.   0.]
 [  1.   0.   0.]
 [  2.   0.   0.]
 [  3.   0.   0.]
 [  4.   0.   0.]
 [  5.   0.   0.]
 [  6.   0.   0.]
 [  7.   0.   0.]
 [  8.   0.   0.]
 [  9.   0.   0.]

python(三):python语法学习与报错记录_第2张图片

        当变量名称和变量在一个语句里面打印时:

    print("cp_int:",cp_int)

        结果为:(因为输出有“()”,给人不整洁的感觉)

meng@meng:~/Downloads/论文/张正友标定法/Calibration_ZhangZhengyou_Method-master$ python calib_RGB.py 
('cp_int:', array([[  0.,   0.,   0.],
       [  1.,   0.,   0.],
       [  2.,   0.,   0.],
       [  3.,   0.,   0.],
       [  4.,   0.,   0.],
       [  5.,   0.,   0.],
       [  6.,   0.,   0.],
       [  7.,   0.,   0.],

python(三):python语法学习与报错记录_第3张图片

五 报错记录

5.1 SyntaxError: Non-ASCII character

报错:

  File "plot_curve.py", line 1
SyntaxError: Non-ASCII character '\xe5' in file plot_curve.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

解决方案:

在py文件第一行加上

# -*- coding: utf-8

5.2 SyntaxError: non-default argument follows default argument

报错:

    def getAverage(array_ymp=[],total_number):
                  ^
SyntaxError: non-default argument follows default argument

对应程序:

def getAverage(array_ymp=[],total_number):
    sum_tmp=0.0
    index=0
    while index

报错原因:non-default argument follows default argument----没有默认值的参数放在了有默认值的参数的后面,这里array_ymp有默认参数“[]”即空数组,而total_number没有默认值,

办法:

(1)调整无默认参数的参数靠前:

def getAverage(total_number,array_ymp=[]):

注意调用函数处也需要相应进行修改

(2)或者给无默认参数的参数加上一个参数,一般开源包的函数都会有默认参数

def getAverage(array_ymp=[],total_number=500):

你可能感兴趣的:(python学习,学习,python)