华为AI全栈成长计划课程——AI基础篇——第一周笔记1

第1章 Python语言基础

1.1 初探Python

    课程准备

  • 首先安装Python,我安装了版本3.6。考虑到方便,所以使用的是Adaconda3自带的Python,并没有独自下载安装Python。
  • 安装Visual Studio Code以及拓展
      Magic Python
      Python
      Python for VSCode
  • 试运行Python代码,熟悉VSCode操作

    Python

  1. 简单
  2. 功能强大
  3. 可移植性,可扩展性,可嵌入性
  4. 人生苦短,我用Python

    Python 与 C语言

C语言:源代码->机器语言->链接->可执行文件->执行
Python:脚本语言,不需要编译成二进制代码,可以直接从源代码运行程序。源代码->字节码->机器语言->执行

    Python实用函数

1. dir([obj])
  显示对象的属性,如果没有提供参数,则显示全局变量的名字,通过执行dir(对象),可以看到其属性和函数信息。
2. help()
  输入int,str,dict等获取帮助信息。

1.2 数据类型

标准类型:数字  字符串(str)  列表(list)  元组(tuple)  字典(dict)  集合(set)
其他类型:类型(type)  Null对象(None)  函数  模块  类  文件
标准类型的三种分类方式:存储模型  更新模型  访问模型

    数字

数字类型:整型  长整型  布尔型  浮点型  复数(real imag conjugate())
数字常量:16进制0x  8进制0o  2进制0b  长整数加大写字母L
运算:无++等运算符  引入了地板除//
转换函数:int()  long()  float()  complex()复数  bool()  hex()16进制  oct()8进制  bin()2进制  chr()ASCII码转字符  ord()字符转ASCII码
功能函数:abs()  pow(num1,num2,mod=1)取num1的num2次方,可选取余  round(flt,ndig=0)浮点数保留ndig位小数
序列类型:下标[]  切片[起始:终止:步长]  重复*  连接+  包含判断in/not in  enumerate()  len()  reversed()  zip(it0,it1,...,itN)返回一个列表

    字符串

字符串常量:单引号  双引号  三重引号  字符串后无'\0'结尾
字符串序列:与序列操作相同  比较== < > !=
字符串连接:不推荐使用+连接字符串,可以使用str1.join(str2),效率更高
字符串格式化:%[(name)][flags][width][.precision]typecode% (a,b,c)
字符串操作符:“r”“R”原始字符串操作符号  “u”“U”Unicode操作符,转换成Unicode编码
字符串是不可改变的对象:对于不可改变的对象,像字符串,在赋值时作为左值的表达式必须是完整的对象,不能是单个元素或者常量。否则就会引发异常。就象我们前面举的给字符串的切片赋值的例子。
函数:min()  max()
拓展:字符串的编码和解码s.encode(‘utf8’), s.decode()  Unicode三明治:decode->process->encode  bytes和bytearray

    List列表

List:序列对象[],可使用序列操作,可比较,数据可变。内置cmp() len() max() min()函数。
常用函数:append()  count()  extend()  Index()  insert()  pop()  remove()  reverse()  sort()
List推导/解析:对list 中的每个元素应用一个函数/表达式, 从而将一个list 映射为另一个list  for in循环遍历  map():map(function, sequence) -> 可迭代对象  reduce():reduce(function, sequence[, initial]) -> value

    Tuple元组

Tuple:(),数据不可变,元组数据结构的物理内容不变,与引用对象无关,如若引用对象为列表,列表本身不可变,列表内数据相对可变。  常用函数count() index()  Tuple与List相互转换  陷阱:单元素Tuple要加逗号“,”
Tuple好处:操作速度快,保护不可写数据,可作为dic的key,可用于字符串格式化。

    Dictionary字典

Dictionary: 字典解析与列表解析类似
相关操作:
1、使用zip构造一个字典:dict=dic(zip(['server','database'],['linuxhost1','master']))
2、使用已经存在的key获取元素的值
3、使用不存在的key,字典新增加一个元素
4、字典元素的值可以是任意类型,如数字
5、字典的key是任意可hash的对象,如数字
6、del删除字典元素:del dict['server']
7、字典的clear()方法清除字典所有元素:dict.clear()
8、for in/for in enumerate循环遍历
9、使用dict函数传入键值对构造:dict1=dic(x=1,y=2)
10、使用现有dict解包构造新的dict:dic2=dict(**dic1)
11、使用dict的copy()函数构造dict:dic2=dic1.copy()
常用函数:clear()  copy()  get(key)  items()  keys()  values()  update()  fromkeys()  setdefault()  sort()

    set集合

集合:无序排列的可哈希的值,可作为dic的key  
集合的类型:可变集合(set)和不可变集合(frozenset)  
1、可变集合可以增删元素,是不可哈希的,因此既不能作为字典的键也不能作为其他集合中的元素。
2、不可变集合则正好相反。
集合支持的操作:

    变量

Python一切皆对象,变量不是盒子,而是对象上的标注。
命名:
1、以字母或_开头,其他部分字母数字_,大小写敏感。
2、单下划线_foo开头不能被from import导入,双下划线__foo开头表私有成员,双下划线__foo__开头结尾表Python内特殊方法。
变量:声明  赋值(一次赋多值、多重赋值、增量赋值)  引用(每个对象有引用计数器,当计数器为0,自动调用垃圾回收机制,del只删除名称,不删除对象本身,也可完整删除对象中的元素)
浅拷贝和深拷贝:
1、浅拷贝指向同一对象,只是拷贝了引用的副本,如切片、copy模块的copy.copy()。
2、深拷贝指向不同对象,拷贝了对象本身的副本,如copy模块的copy.deepcopy()。

1.3 基本语句

print  del  if  while  for  break  continue  pass
按照缩进自动识别语句和语句块的边界,空格和注释(#,''')都将被忽略
if:if...elif...else
条件表达式(即“三元操作符”):C/C++: condition? X:Y  Python: X if condition else Y
else:while和for循环后可以有else语句,else语句缩进与while/for循环一致,以覆盖循环终止条件的判定,循环内break语句终止循环,不进入else语句块。
pass:空语句,在开发和调试很有用。

posted @ 2020-09-20 13:32  Sno_W_olF  阅读(259)  评论(0编辑  收藏  举报