作为一个实用主义的学习者,最关心的问题一定是【我为什么要选择学Python,学会之后我可以用来做什么?】首先,对于初学者来说,比起其它编程语言,Python更容易上手。Python的设计哲学是优雅、明确、简单。

在官方的The Zen of Python《Python之禅》中:There should be one – and preferably only one – obvious way to do it.

Python追求的是找到最好的解决方案。

⛄函数

所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用。

函数的使用包含两个步骤:

(1)定义函数——封装独立的功能;

(2)调用函数——享受封装的成果;

函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的重用。其实我们早已掌握了函数的用法,例如:

print() :是一个放入对象就能将结果打印的函数;

input():是一个可以让用户输入信息的函数;

len():是一个可以测量对象长度的函数;

int():是一个可以将字符串类型的数字转换成是整数类型的函数。

通过观察其实不难发现,Python中所谓的函数就是把你要处理的对象放到一个名字后面的括号里就可以了。

👀函数的定义

定义函数的格式如下:

def 函数名(参数1,参数2):
函数封装的代码
return

(1)def:是英文define的缩写。

(2)函数名称:应该能够表达函数封装代码的功能,方便后续的调用。

(3)函数名称的命名应该符合标识符的命名规则。

​ ①可以由字母、下划线和数字组成

​ ②不能以数字开头

​ ③不能与关键字重名

函数调用:调用函数很简单的,通过函数名()即可完成对函数的调用;函数调用应该放在函数定义的下方。

def say_hello():
print("hello world_1")
print("hello world_2")
# 只有在调用函数时,之前定义的函数才会执行
# 函数执行完成之后,会重新回到之前的程序中,继续执行后续的代码
say_hello()

👀函数的参数

函数,把具有独立功能的代码块组织为一个小模块,在需要的时候调用。

函数的参数,增加函数的通用性,针对相同数据处理逻辑,能够适应更多的数据。

(1)在函数内部,把参数当做变量使用,进行需要的数据处理;

(2)函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过参数传递。

形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用;

实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的。

函数返回值。在程序开发中,有时候,会希望一个函数执行结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理。

返回值是函数完成工作后,最后给调用者的一个结果;在函数中使用return关键字可以返回结果;调用函数一方,可以使用变量来接收函数的返回结果。

注意:return表示返回,后续的代码都不会被执行。

def sum(num1, num2):
return num1 + num2
# 调用函数,并使用result变量接收计算结果
result = sum(10, 20)
print("计算结果是%d"%result)

⛄数据结构

Python 有四种数据结构,分别是:列表、字典、元组,集合。每种数据结构都有自己的特点,并且都有着独到的用处。为了避免过早地陷入细枝末节,我们先从整体上来认识一下这四种数据结构:

list = [vall,val2,val3,val4]
dict = {key1:vall,key2:val2}
tuple = (vall,val2,val3,val4)
set = {vall,val2,val3,val4}

从最容易识别的特征上来说,列表中的元素使用方括号扩起来,字典和集合是花括号,而元组则是圆括号。其中字典中的元素是均带有”:”的keyvalue的对应关系组。

Python中数据类型可以分为数字型非数字型

(1)数字型

  • 整型(int

  • 浮点型(float

  • 布尔型(bool

    • True0数——非零即真
    • False 0
  • 复数型(complex)主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题

(2)非数字型

  • 字符串
  • 列表
  • 元组
  • 字典

(3)在Python中,所有非数字型变量都支持以下特点

  • 都是一个序列sequence,也可以理解为容器
  • 取值[]
  • 遍历for in
  • 计算长度、最大/最小值、比较、删除
  • 链接+和重复*
  • 切片

👀列表

列表具有的最显著的特征:

  • 列表中的每一个元素都是可变的;
  • 列表中的元素是有序的,也就是说每一个元素都有一个位置;
  • 列表可以容纳Python中的任何对象。

列表中的元素是可变的,这意味着我们可以在列表中添加、删除和修改元素。

Weekday = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Sunday"]
print(Weekday[0])

List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组。专门用于存储一串信息;列表用[]定义,数据之间使用,分隔;列表的索引从0开始。

索引就是数据在列表中的位置编号,索引又可以被称为下标。从列表中取值时,如果超出索引范围,程序会报错

序号 分类 关键字/函数/方法 说明描述
1 增加 列表.insert(索引,数据) 在指定位置插入数据
列表.append(数据) 在末尾追加数据
列表.extend(列表2) 将列表2的数据追加到列表
2 修改 列表[索引] = 数据 修改指定索引的数据
3 删除 del 列表[索引] 删除指定索引的数据
列表.remove[数据] 删除第一个出现的指定数据
列表.pop 删除末尾数据
列表.pop(索引) 删除指定索引数据
列表.clear 清空列表
4 统计 len(列表) 列表长度
列表.count(数据) 数据在列表中出现的次数
5 排序 列表.sort() 升序排序
列表.sort(reverse = True) 降序排序
列表.reverse() 逆序、反转

del关键字

  • 使用del关键字(delete)同样可以删除列表中元素;
  • del关键字本质上是用来将一个变量从内存中删除的;
  • 如果使用del关键字将变量从内存中删除,后续的代码就不能再使用这个变量了。

在日常开发中,要从列表删除数据,建议使用列表提供的方法。

循环遍历

遍历就是从头到尾依次从列表中获取数据;在循环体内部针对每一个元素,执行相同的操作。在Python中为了提高列表的遍历效率,专门提供的迭代iteration遍历。使用for就能实现迭代遍历。

for name in name_list:
print(name)

应用场景

尽管Python的列表中可以存储不同类型的数据。但是在开发中,更多的应用场景是

  • 列表存储相同类型的数据
  • 通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作

👀元组(Tuple)

元组其实可以理解成一个稳固版的列表,因为元组是不可修改的,因此在列表中的存在的方法均不可以使用在元组上,但是元组是可以被查看索引的,方式就和列表一样:

letters = ("a", "b", "c", "d", "e", "f", "g", "h")
letter[0]

(1)Tuple(元组)与列表类似,不同之处在于元组的元素不能修改

  • 元组表示多个元素组成的序列

  • 元组在Python开发中,有特定的应用场景

(2)用于存储一串信息,数据之间使用,分隔

(3)元组用()定义

(4)元组的索引从0开始,索引就是数据在元组中的位置编号

info_tuple = ("zhangsan",18,1.75)
# 创建空元组
first_tuple = ()
# 元组中只包含一个元素时,需要在元素后面添加逗号
second_tuple = (50,)

元组的索引值是从0开始的,len(元组)获取元组的长度n+1,元组.count(数据)数据在元组中出现的次数。

  • 元组[索引]表示从列表中取值
  • 元组.index[数据]表示获得数据第一次出现的索引。

循环遍历

取值就是从元组中获取存储在指定位置的数据。

遍历就是从头到尾依次从元组中获取数据。

for item in name_tuple:
print(item)

Python中,可以使用for 循环遍历所有非数字型类型的变量:列表、元组、字典以及字符串提示:在实际开发中,除非能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多

应用场景

尽管可以使用for in 遍历元组。但是在开发中,更多的应用场景是:

  • 函数的参数和返回值,一个函数可以接收任意多个参数,或者一次返回多个数据(可以利用元组保存数据,即返回值默认是以元组形式保存的);
  • 格式化字符串,格式化字符串后面的()本质上就是一个元组;
  • 让列表不可以被修改,以保护数据安全。

元组和列表之间的转换

# 使用list函数可以把元组转换成列表
list(元组)
# 使用tuple函数可以把列表转换成元组
tuple(列表)

👀字典(Dictionary)

编程世界中其实有很多概念都基于现实生活的原型,字典这种数据结构的特征也正如现实世界中的字典一样,使用名称一内容进行数据的构建,在Python中分别对应着键(key)-值(value),习惯上称之为键值对。

字典的特征总结如下:

  • 字典中数据必须是以键值对的形式出现的;
  • 逻辑上讲,键是不能重复的,而值可以重复;
  • 字典中的键(key)是不可变的,也就是无法修改的;而值(value)是可变的,可修改的,可以是任何对象。
xiaotang = {
"name": "xiaotang",
"age": 18,
"gender": True,
"height": 1.80
}

(1)dictionary(字典)是除列表以外Python之中最灵活的数据类型

(2)字典同样可以用来存储多个数据

  • 通常用于存储描述一个物体的相关信息

(3)字典和列表的区别

  • 列表有序的对象集合
  • 字典无序的对象集合

(4)字典用{}定义

(5)字典使用键值对存储数据,键值对之间使用,分隔

  • key是索引

  • value是数据

  • 键和值之间使用:分隔

  • 键必须是唯一的

  • 值可以取任何数据类型,但键只能使用字符串、数字或元组

字典的常用操作

关键字/函数/方法 描述说明
len(字典) 获取字典的键值对数量
字典.keys() 所有key列表
字典.values() 所有value列表
字典.items() 所有(keyvalue)元组列表
字典[key] 可以从字典中取值,key不存在会报错
字典.get(key) 可以从字典中取值,key不存在不会报错
del 字典[key] 删除指定键值对,key不存在会报错
字典.pop(key) 删除指定键值对,key不存在会报错
字典.popitem() 随机删除一个键值对
字典.clear() 清空字典
字典[key] = value 如果key存在,修改数据
如果key不存在,新建键值对
字典.setdefault(key, value) 如果key存在,不会修改数据
如果key不存在,新建键值对
字典1.update(字典2) 将字典2的数据合并到字典1

循环遍历

遍历就是依次从字典中获取所有键值对。

for item_key in name_dic:
print("%s: %s" % (item_key, name_dic[item_key]))

在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多。

应用场景

尽管可以使用for in遍历字典。但是在开发中,更多的应用场景是:

  • 使用多个键值对,存储描述一个物体的相关信息——描述更复杂的数据信息
  • 将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理
card_list=[
{"name": "张三”,
"qq": "12345",
"phone": "110"},
{"name": "李四",
"qq": "54321",
"phone": "10086"}
]

👀集合(Set)

集合则更接近数学上集合的概念。每一个集合中的元素是无序的不重复的任意对象,我们可以通过集合去判断数据的从属关系,有时还可以通过集合把数据结构中重复的元素减掉。

集合不能被切片也不能被索引,除了做集合运算之外,集合元素可以被添加还有删除。

item_set = {1,2,3,4}
item_add(5)
item_discard(5)

参考文献:

《编程小白的第1本Python入门书》侯爵

《Python入门教程完整版》黑马程序员

《Python基础教程(第3版)》 Magnus Lie Hetland(著)袁国忠(译)