Python学习笔记

笔者自身有一定的语言功底,故基础性的知识并未详细涉及,属于进阶笔记,若是初学可以结合以下Python文档进行学习

https://www.w3cschool.cn/python3/python3-tutorial.html

标识符的命名规则

标识符的其他的部分有字母、数字和下划线组成
第一个字符必须是字母表中字母或下划线’_’
标识符对大小写敏感
一般情况下,Python中的变量常量无任何区别,为提高辨识度,常量全部使用大写字母
同时命名时,应注意变量常量不应与关键字同名

关键字

在交互式窗口输入以下代码,可以查看到Python中的所有关键字

>>>import keyword
>>>keyword.kwlist

注释

Python 中单行注释以 # 开头
多行注释采用三对单引号或者三对双引号将注释括起来,如下:

#单行注释
"""
多行注释
"""

与C语言的不同

在直观感受上,Python与C语言最大的不同在于,Python使用缩进来表示代码块,语句结束后不需要使用分号(;),当然也可以使用分号,如同一行中使用多条语句:

print("第一句");print("第二句");print("第三句")
print("hello world")

同时,以上代码作为初学必敲代码,在敲写时会发现print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""

等待用户输入

可以用以下语句作为程序的结束

input("按下 enter 键后退出。")

基本数据类型

注:虽然有基本的数据类型,但是在Python中变量在定义时无需声明其数据类型,直接使用赋值语句进行定义

Python 中有六个标准的数据类型:

Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)

关于字符串:
单引号和双引号使用完全相同
r"this is a line with \n" ,表示自然字符串,\n不会换行
在Python中没有单独的字符类型,一个字符就是长度为 1 的字符串。

其他详细介绍,请翻阅Python文档。

运算符

与C语言相区别,Python中的逻辑运算符为:and、or、not
除此以外还包括一些新的运算符:位运算符、成员运算符、身份运算符

数据的引用(可理解为贴标签)

  • Python中的变量的概念类似于C++语言中的指针,变量中保存着记录数据的地址,叫做引用
  • 可以使用id( )函数查看变量中保存数据的地址
  • 在Python中函数的参数传递以及返回值都是靠引用实现的

注意:如果变量已经被定义,当更改一个变量的赋值时,实际上是修改了数据的引用。

可变和不可变类型

可不可变是指内存中的数据是否允许修改

  • 不可变类型:数字类型、字符串、元组
  • 可变类型:列表、字典、集合

注意:键值对中key必须是不可变类型。

一些特殊函数和方法

哈希(hash)
Python中有一个名字叫 hash( ) 的内置函数,他是一种算法,用于提取不可变类型数据的特征码

round(第一个参数,第二个参数)
作用就是截取小数点后几位
第一个参数是接收的变量,第二个参数是保留多少位小数

strip()
字符串内置的strip()方法,用于移除字符串头尾的空格、换行、制表符等

dir()
内置的dir()函数可以找到模块内定义的所有名称

局部变量与全局变量

局部变量是在函数内部定义的,只能在函数内部使用
全局变量实在函数外部定义的,所有函数都可以使用

  • 函数执行完后,函数内部的局部变量就会被系统回收
  • 不同的函数内可以定义名字相同的局部变量,不会发生冲突

注意:在其他开发语言中,不轻易使用全局变量,可变范围太大,导致程序可维护性降低,同时命名全局变量时应该增加g_或gl_的前缀。

函数内部修改全局变量的错误做法,以下案例的修改只是在函数内部定义了一个名称相同的局部变量

#定义一个全局变量
num = 10

def demo1():
	#希望在函数内部修改全局变量的值
	num = 99
	print("num = %d" % num)
def demo2():
	print("num = %d" % num)

在函数中修改全局变量的正确做法是使用global+变量名进行声明,此时在函数内部使用赋值语句时,就不会创建局部变量

规范的Python程序代码结构
shebang
import模块
全局变量 、常量
函数定义
执行代码

函数进阶

如果希望函数一次返回多个值,可以使用元组,同时小括号可以省略

def measure():
	"""测量温度和湿度"""
	print("开始测量")
	temp = 20
	wetness = 50
	print("测量结束")
	
	return temp,wetness
	
result = measure()
print(result)

交换两个变量的方法

#使用其他变量
temp = a
a = b
b = temp
#不使用其他变量
a = a + b
b = a - b
a = a - b
#使用元组
a,b = (b,a)#小括号可以省略

如果传递的参数是可变类型,在函数内部使用方法修改了数据内容,同样会影响到外部的数据

注意:在Python中,列表变量调用+=本质上是在执行方法extend,不会修改变量的引用,同时 list += list 不等于 list = list + list,前者为方法操作,后者为赋值操作。

缺省参数

定义函数时,具有默认值的参数就叫做缺省参数,一般情况下将常见的值设置为参数的缺省参数,简化函数的调用

gl_list = [6,3,9]

#使用sort方法排序,默认式按照升序排列
gl_list.sort()
print(gl_list)
#如果需要降序排序,需要指定reverse参数
gl_list.sort(reverse = True)
print(gl_list)

这里的reverse参数就是缺省参数

那么,如何指定函数的缺省参数?在参数列表中使用赋值语句即可:
def test(parameter_1,parameter_2 = ×)

缺省参数的注意事项:
1)必须保证带有默认值的缺省参数定义在参数列表末尾
2)调用函数时,如果有多个缺省参数,赋值时需要指定参数名

多值参数

有时一个函数能够处理的参数个数不确定,这时便需要多值参数
Python中有两种多值参数:
*args——存放元组参数
**kwargs——存放字典参数
拆包语法:作用简化元组变量和字典变量的传递

函数的递归

特点:一个函数内部调用自己,也就是套娃

代码特点:
1.函数内部的代码是相同的,只是针对不同的参数,处理的结果不同
2.当参数满足一个条件时,函数不再执行,通常被称为递归的出口,非常重要,否则会出现死循环

面向过程 与 面向对象

面向过程:把完成某一需求的所有步骤从头到尾逐步实现,根据开发需求把某些功能独立的代码封装成一个个函数,最后的代码就是顺序调用不同的函数。
面向对象:相比较函数,面向对象是个更大的封装,完成某一需求前首先确定的是职责和对象,确定不同的对象,对象内部封装不同的方法,最后的代码就是顺序地让不同的对象调用不同的方法。

类和对象

类和对象是面对对象编程的两个核心概念
类就好比制作飞机的图纸,是一个模版,是负责创建对象的,其三要素是类名、属性和方法,类型满足大驼峰命名法 ,如CapWords
对象就好比用图纸制造出来的飞机,是由类创建出来的具体存在

在Python中对象是无处不在的,比如变量、数据、函数,可以有两个方法去查看具体对象的所有属性和方法:
1)在标识符后输入.后按下TAB键
2)使用Python内置函数dir()

定义一个简单的类

#定义类
class 类名:
	#方法的第一个参数必须是self
	def 方法1(self,参数列表)pass

#创建对象
	对象变量 = 类名()

注:哪一个对象调用的方法,self就是哪一个对象的引用

class Cat:
"""这是一个猫类"""
	def
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值