机器学习基础知识笔记记录
1. UTF-8 字符集
UTF-8编码是可变长的编码,把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符会被编码成4-6个字节。在这种情况下,如果需要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。UTF-8编码还有额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以它可以适应ASCII编码的软件。
# 查找数字对应字符
ch = chr(65)
print(ch)
# 查找字符对应数字
num = ord('A')
print(num)
# 查看1-30000的数字与字符
# 可以看到字符编码对应的中文
for i in range(0, 30000, 1): # range(start, end, step)
print(chr(i), ":", i)
pass
类似的其他类型转化有
int('字符串') # 转化成整型
float('字符串') # 转化成浮点型
2. 标识符和保留字
- 标识符是指用来标识某个实体的符号,在不同的应用环境下有不同的含义。在编程语言中,标识符是用户编程时使用的名字,对于变量、常量、函数、语句块也有名字,统称为标识符。
(1)在Python里,标识符有字母、数字、下划线组成,但不能以数字开头。
(2)Python中的标识符是区分大小写的。
(3)以下划线开头的标识符是有特殊意义的,以单下划线开头。例如_foo,代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import * 导入。
(4)以双下划线开头的 foo 代表类的私有成员。
(5)以双下划线开头和结尾的__foo__ 代表python里特殊方法专用的标识,如__init__()代表类的构造函数。 - Python可以同一行显示多条语句,方法是用;分开。但在通常情况下不使用分号,而是直接进行换行。
- 保留字指在高级语言中已经定义过的字,使用者不能再将这些字作为变量、常量、函数、语句块等的命名使用。保留字包扩关键字和未使用过的保留字,关键字指在鱼眼中有特定含义、成为语法中的一部分的那些字。(如for / if / pass / …)
and | exec | not |
---|---|---|
assert | finally | elif |
break | for | or |
class | from | pass |
continue | global | |
def | if | raise |
import | try | … … |
3. 语法规范
- Python的代码块不使用大括号来控制区分函数、逻辑判断和代码块等语句块的作用域范围和控制区域。Python最具特色的就是用缩进来写模块。
- 缩进的空白数量是可变的,但是所有代码块必须包含相同的缩进空白数量,具有行缩进一致的相邻代码块被认定为是1个块结构。
# 所有类默认继承的父类是object;
# 在没有指定类的情况下,可以忽略括号;
class Animal(object):
def __init__(self, name): # self == this, 代表当前对象
print("构造函数")
self.name = None # None = null, 定义了类的成员属性
pass
def eat(self, food): # 成员方法
print("吃" + food)
pass
pass
dog = Animal() # 创建类的对象
dog.eat("大棒骨")
pass 保留字主要是为了补齐代码结构, 不写也可以。
由于行缩进导致编码执行报错,经常会出现两种情况:
IndentationError:unexpected indent # 错误是文件里格式不对,可能是tab和空格没对齐的问题。所有Python对格式要求非常严格。
IndentationError:unindent does not match any outer indentation level # 错误表明使用的缩进方式不一致,有的是tab键缩进, 有的是空格缩进, 改为一致即可。
- Python 语句中一般以新行作为语句的结束符。有的时候一行代码太长,使用斜杠(\)将一行语句氛围多行显示。
a = 1
b = 2
c = 3
d = a + b \
+ c
print(d)
- 语句中包含[] , {}或()就不需要使用多行连接符,因为它们属于序列数据类型。
4. 单行注释、多行注释及跨行字符串
# 注释和字符串
# 1. Python没有字符类型, 只有字符串类型'',""
string1 = '123456'
string2 = "abcdef" # 字符串定义
# 多行注释
'''
多行注释
注释
注释
'''
"""
多行注释
注释
注释
"""
# 2. 定义跨行字符串
string3 = """
春花秋月何时了
往事知多少
小楼昨夜又东风
故国不堪回首月明中
雕栏玉砌应犹在
只是朱颜改
问君能有几多愁
恰似一江春水向东流
"""
print(string3)
函数注释,三个单引号,自动生成里面内容:
def sum(a, b):
'''
求两个数的和
:param a: 第一个参数
:param b: 第二个参数
:return: 返回求和结果
'''
pass
5. 输入输出
- input() 函数: 等待用户输入,实际上是将当前运行的程序线程挂起,暂停程序的运行。等待用户交互操作之后,再按回车或输入待定字符之后,恢复程序挂起的线程,继续执行,同时处理输入的数据。
- input(‘……输入提示内容……’) 该函数用接收的数据全部为str字符串类型。
- 若想转换成其他类型,需使用强制类型转换,如类型名称(str数据)。
- print() 函数: print() 打印输出函数是在开发中用得很多的函数, 代表输出并换行。其语法结构也有很多。
(1)格式化输出规范1:
# 输入
rs = input("请输入")
print(rs)
# print(self, *args, sep = '', end = '\n', file = None):
# args 可以接收任意长度的参数
# sep 是分隔符,默认使用空格进行分割
# end 是换行处理
print(1,2,3,4,5,6,7,8,9, sep="-", end="\n")
name = 'zhangsan'
age = 20
phone = '12345678'
print(name, age, phone, sep='\n')
(2) 格式化输出2:
name = 'zhangsan'
age = 20
phone = '12345678'
money = 10000000000.101101
print(name, age, phone, sep='\n')
# printf 1. %字符串的格式化输出 2. format函数, 是str类里面的函数
print("姓名: %s, 年龄: %d, 手机号: %s, 余额: %.2f" % (name, age, phone, money)) # 占位符
print("姓名: {0}, 年龄: {1}, 手机号: {2}, 余额:{3}".format(name, age, phone, money))
6. argv 命令行参数
import sys
sys.argv # public static void main(String[], args)
print(sys.argv)
以terminal的方式启动该文件
import sys
sys.argv # public static void main(String[], args)
print(sys.argv)
name = sys.argv[1]
age = sys.argv[2]
if name == '-V':
print("version", "1.0.0.1")
pass
print("name", name, 'age', age)