愤鸟的Python3入门笔记(Day1)

Author Avatar
fnxf 2020年09月05日
  • 在其它设备中阅读本文章

注:根据廖的教程学习。本文为个人向笔记,仅供参考。 Day1指第几天学的内容,不指本文写完的时间。

0.环境

WSL(Ubuntu20.4,后称WSL)+Python3.8.X(后称Py3)+Emacs

1.输入输出

Py3的常用输入方式有: a=input()

需要注意的是,Py3的输入格式默认为字符串。如需使用数字,则需进行转换。典型的转换方式如下:

a=input()
try:
    a=int(a)
except:
    print("ERROR\b")

常用输出方式是: print()

其支持使用占位符,格式化方式和C++一致,只是代码具体格式和C++有区别,例子为: print("Do you %s Mi %di?"%("like",4))其输出为Do you like Mi 4i?.

2.变量、数据类型

Py3的变量类型确定但不固定。基本数据类型大体和C一致,只是不限定所用字节数,并在其基础上增加了一个类型:空值(None)。在Py3里,None不等于0.

多行内容可用如下方式表示:

print('''wdnmd
A1高闪
我起了,一枪秒了,有什么好说的?''')

Py3的高级数据类型有:

  • 列表(list),类似于C++的数组/链表。包含append()、pop()、insert()等方法。
  • 元组(tuple),即不能修改的列表。
  • 字典(dict),类似C++里的std::map。包含pop()、get()等方法。
  • 集合(set),类似于C++里的std::set。包含add()、remove()等方法。

一些注意事项

  • 元组中的子列表仍可被修改,因为元组中存储的是指向子列表的指针
  • 字符串类型是不可变对象,修改的原理大概是复制、修改、赋值

3.一些基本语法

条件判断

if (a>0 and a<=10):
    pass
elif (a>10 or a<0):
    pass
else:
    pass

循环

迭代器循环(类C++中for循环)

a=0
for x in num:
   a=a+x

while循环(类C++中while循环)

while n>0:
    n=n-1

break continue可用, pass 为占位符。

4.函数

定义函数

def fun(x):
    pass

函数返回值

Py3的函数仅返回单一值,类型自动指定。

“多值”以元组(tuple)形式返回。

函数参数

位置、默认参数

位置参数与C++中函数的参数类似,默认参数为带默认值的参数。无默认值的参数必选。

注意:默认参数必须指向不可变对象(含None)

可变参数

可变参数可以使函数接受数量不定的参数。

定义方式def fun(*num) 。该参数传入一个元组(tuple)

调用方式fun(1,2,3)

nums=[1,2,3]
fun(*nums)

关键字参数

关键字参数与可变参数类似,可接受数量不定的参数。

定义方式def fun(**num)。该参数传入一个字典(dict)

调用方式fun(a=1,b="2",c=false)

命名关键字参数

指定了关键字参数的数量。

定义方式def fun(a,*,size,color)

调用方式fun(1,size=32,color="light_blue")

顺序

必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

建议参数组合中种类数尽量少。

递归

类C++中函数递归。注意栈。

切片

从顺序存储的数据类型的变量中取一段,作为同类型新变量的值。

例如:

L[0:3] #从L中取索引[0,3)的元素
L[-2:-1] #从L中取索引[-2,-1)的元素,即倒数第二个元素
L[:] #复制整个变量
L[::2] #每2个元素取一个

编码

对于单字符,可通过ord()函数获取字符的整数表示,通过chr()函数把编码转为对应字符。

对于字符串,可通过encode()方法编码为指定的bytes,如"このはな綺譚".encode("utf-8");可通过decode()方法解码字节,如b"\xe3\x81\x93\xe3\x81\xae\xe3\x81\xaf\xe3\x81\xaa\xe7\xb6\xba\xe8\xad\x9a".decode("utf-8")

在编码时,可传入errors='ignore'忽略错误的字节。

封面pixiv id:79940161

本文链接:https://54df.cc/index.php/archives/10/
本博客内容除另有声明,均在CC BY-NC-SA 4.0下提供。