Python 基础学习笔记(超详细版)
1.变量
python中变量很简单,不需要指定数据类型,直接使用等号定义就好。python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前那个变量知道那个变量值的内存地址存起来,而不是指向之前的那个变量。
变量的定义规则:
变量名要见名知意,不能用拼音,不能用中文
变量名只能是字母,数字,下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名:
2.单引号,双引号和三引号(三个单引号)
python中定义变量的时候字符串都用引号引起来,此时单引号和双引号没有区别。但是如果字符串中有单引号的话,外面就得用双引号;如果里面有双引号,外面就用单引号;如果既有单引号又有双引号,那么用三引号,三引号也可以多行注释代码,单行注释,使用#。
3.数字
python 中数字类型的变量可以表示任意大的数值
十六进制一 0x 开头,八进制以 0o 开头,二进制以 0b 开头
python 中可以表示复数用j来表示虚部 complex(a,b)函数可以形成复数
real 查看实部 imag 查看虚部 conjugate()返回共轭复数
a=99999999999999
print(a*a)
print(math.sqrt(3**2+4**2))
a=3+4j
b=complex(5,6)
c=a+b
print(c)
print(c.real)
print(c.imag)
print(c.conjugate())
运行结果
9999999999999800000000000001
5.0
(8+10j)
8.0
10.0
(8-10j)
4.输入,输出
python使用input函数接收用户输入,python2中使用raw_input,接收的是一个字符串;使用print输出:
input 在接收输入的时候,是可以看到你输入的值的,如果是输入密码这样的呢,不想让别人看到你的密码,怎么办呢,就需要用到一个标准库,getpass,什么是标准库呢,就是不需要你再去安装,装完 python 就有的库,就是标准库,getpass 就是一个标准库,导入进来之后,直接使用 getpass.getpass 方法就可以在输入的时候,不会显示了:
注意:pycharm 不支持 getpass 模块,在 python 模块的 ide 下可展示。
5.列表(List)
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。
#!/usr/bin/python list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ] print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]
你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:
list = [] ## 空列表
list.append('Google') ## 使用 append() 添加元素
list.append('Runoob')
print list
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。如下所示:
6.Python列表函数&方法
Python包含以下函数:
cmp(list1, list2):比较两个列表的元素
cmp(list1, list2):比较两个列表的元素
len(list):列表元素个数
max(list):返回列表元素最大值
min(list):返回列表元素最小值
list(seq):将元组转换为列表
Python包含以下方法:
list.append(obj):在列表末尾添加新的对象
list.count(obj):统计某个元素在列表中出现的次数
list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj):从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj):将对象插入列表
list.pop([index=-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj):移除列表中某个值的第一个匹配项
list.reverse():反向列表中元素
7.常用内置函数
执行这个命令可以查看所有内置函数和内置对象(两个下划线)
>>>dir(__builtins__)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy',
'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
测试:
a=-2
b=[1,2,3,4,0]
c='a'
print( abs(a) ) #返回数字的绝对值
print( all(b) ) #对于可迭代对象所有元素 全部非零返回true 若存在零返回false
print( any(b) ) #对于可迭代对象存在元素非零,则返回true
print( bin(a) ) #把数字转换为二进制串
print( callable(a) ) #测试对象是否可调用,类和函数是可调用的
print( chr(65) ) #返回ASCII编码的字符
#print( dir(a) ) #返回指定对象的成员列表
print( ord(c) ) #返回一个字符的编码
print( str(b) ) #把对象转化为字符串
print( help(math.sin)) #查看指定方法的使用帮助
print( list(b) )# 把对象转换为 列表
print( set(b) ) #集合
print( tuple(b) )# 元组
#print( dict(b) ) #字典并返回
结果:
2
False
True
-0b10
False
A
97
[1, 2, 3, 4, 0]
Help on built-in function sin in module math:
sin(…)
sin(x)
Return the sine of x (measured in radians).
None
[1, 2, 3, 4, 0]
{0, 1, 2, 3, 4}
(1, 2, 3, 4, 0)
8.对象的删除(好习惯)
x=[1,2,3,4,5]
y=3
print(y)
del y
del x[1]
print(x)
print(y)
结果:
3
[1, 3, 4, 5]
Traceback (most recent call last):
File “.../练习.py”, line 11, in
print(y)
NameError: name ‘y’ is not defined
9.模块的导入与使用
python中有大量第三方库可用 "pip3 install 。。。"进行有需要的安装
在使用库函数时,需要导入,有两种方法:
import 模块名【as 别名】:使用这种方式导入后,需要在使用的对象前加上前缀 “模块名 . 对项名”的方式进行访问,也可以用“别名 . 对象名”的方式使用其中的对象
from 模块名 import 对象名【as 别名】:使用这种方式仅导入使用的对象,并且可以为这个对象起一个别名,这种方法可以减少查询次数,减少程序员的代码量,不需要使用模块名作为前缀
import math
from math import sin as f print(math.sin(3))
print(f(3))
结果:
0.1411200080598672
0.1411200080598672
比较极端的情况是一次导入模块中全部的对象:
from math import *
不推荐使用这中方法,一旦多个模块中有同名的对象,会导致混乱
10.条件判断:
python中条件判断使用if else 来判断,多分支使用if elif...else,也就是如果怎么怎么样就怎么怎么样,否则怎么怎么样,格式如下:
具体代码如下:
11.循环
python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,for循环的时候必须有一个可迭代的对象,才能循环.python中for循环很简单,循环的是一个可迭代对象中的元素,你这个对象中有多少个元素,就循环多少次,比如说一个数组list,list = ['a','b','c'],在别的语言中要想获取到list中所有的值,必须得使用循环取下标这种方式去取数据,就得这样写list[x],list[x],list[x]这样,在Python里面就不需要直接循环就取的是这个list里面的值,循环里面还有两个比较重要的关键字,continue和break,continue的意思是,跳出本次循环,继续进行下一次循环,break的意思是停止循环,也就是说在continue和break下面的代码都是不执行的,格式如下:
12.range()函数
python 的 range() 函数可用来创建一个整数列表,一般用在 for 循环中.
range()语法:range(start, stop[, step])
start:计数从start开始,默认是从0开始(闭区间),如:range(5)等价于range(0,5).
stop:计数到stop结束,但不包括stop(开区间).如:range(0,5)是[0, 1, 2, 3, 4],不包含5.
step:步长,相邻两个值的差值,默认为1.如:range(0,5)相当于range(0, 5, 1).
13.列表推导式
列表推导式(list comprehension)是指循环创建列表.
# 列表推导式
list_b = [b for b in range(5)]
print(list_b)
上面分别是用for循环和列表推导式创建列表的代码,list_a和list_b的结果是一样的,都是[0, 1, 2, 3, 4].
下面来看复杂点的列表推导式:
# in后面跟其他可迭代对象,如字符串
list_c = [7 * c for c in "python"]
print(list_c) # 带if条件语句的列表推导式
list_d = [d for d in range(6) if d % 2 != 0]
print(list_d) # 多个for循环
list_e = [(e, f * f) for e in range(3) for f in range(5, 15, 5)]
print(list_e) # 嵌套列表推导式,多个并列条件
list_g = [[x for x in range(g - 3, g)] for g in range(22) if g % 3 == 0 and g != 0]
print(list_g)
运行结果:
['ppppppp', 'yyyyyyy', 'ttttttt', 'hhhhhhh', 'ooooooo', 'nnnnnnn']
[1, 3, 5]
[(0, 25), (0, 100), (1, 25), (1, 100), (2, 25), (2, 100)]
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20]]
代码解释:
列表推导式会遍历后面的可迭代对象,然后按照for前的表达式进行运算,生成最终的列表.
如果有if条件语句,for遍历后紧跟着进行条件判断.
3.如果有多个for循环,则最终的数据数量为多个for循环的笛卡尔积.
4.可以进行嵌套的列表推导,与嵌套for循环的原理相同.
14.字典推导式
如果列表推导的概念已经为你所熟知,接受字典推导并不难.直接看代码吧:
# 因为key是唯一的,所以最后value都是1
dict_a = {key: value for key in 'python' for value in range(2)}
print(dict_a) # 可以根据键来构造值
dict_b = {key: key * key for key in range(6)}
print(dict_b) # 遍历一个有键值关系的可迭代对象
list_phone = [('HUAWEI', '华为'), ('MI', '小米'), ('OPPO', 'OPPO'), ('VIVO', 'VIVO')]
dict_c = {key: value for key, value in list_phone}
print(dict_c)
运行结果:
{'p': 1, 'y': 1, 't': 1, 'h': 1, 'o': 1, 'n': 1}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
{'HUAWEI': '华为', 'MI': '小米', 'OPPO': 'OPPO', 'VIVO': 'VIVO'}
15.集合推导式
同样的,直接看代码,这样可以直观的看到集合推导式
# 遍历一个可迭代对象生成集合
set_a = {value for value in '有人云淡风轻,有人负重前行'}
print(set_a)
运行结果:
{'负', '有', '人', '轻', '前', '云', '重', ',', '淡', '风', '行'}
集合是无序且不重复的,所以会自动去掉重复的元素,并且每次运行显示的顺序不一样。
16.创建类
使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾:
class ClassName:
'类的帮助信息' #类文档字符串
class_suite #类体
类的帮助信息可以通过ClassName.__doc__查看。
class_suite 由类成员,方法,数据属性组成。
实例
以下是一个简单的 Python 类的例子:
#!/usr/bin/python
# -*- coding: UTF-8 -*- class Employee:
'所有员工的基类'
empCount = 0 def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1 def displayCount(self):
print "Total Employee %d" % Employee.empCount def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
empCount 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 Employee.empCount 访问。
第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
self代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
创建实例对象
实例化类其他编程语言中一般用关键字 new,但是在 Python 中并没有这个关键字,类的实例化类似函数调用方式。
以下使用类的名称 Employee 来实例化,并通过 __init__ 方法接收参数。
"创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
"创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000)
访问属性
您可以使用点号 . 来访问对象的属性。使用如下类的名称访问类变量:
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount
执行以上代码输出结果如下:
Name : Zara ,Salary: 2000
Name : Manni ,Salary: 5000
Total Employee 2
你可以添加,删除,修改类的属性,如下所示:
emp1.age = 7 # 添加一个 'age' 属性
emp1.age = 8 # 修改 'age' 属性
del emp1.age # 删除 'age' 属性
你也可以使用以下函数的方式来访问属性:
getattr(obj, name[, default]) : 访问对象的属性。
hasattr(obj,name) : 检查是否存在一个属性。
setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
delattr(obj, name) : 删除属性。
hasattr(emp1, 'age') # 如果存在 'age' 属性返回 True。
getattr(emp1, 'age') # 返回 'age' 属性的值
setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8
delattr(emp1, 'age') # 删除属性 'age'
参考文章
python 学习笔记(超详细)(一)
python学习笔记(一)python简介和基础
Python 基础学习笔记(超详细版)的更多相关文章
- python多线程学习笔记(超详细)
python threading 多线程 一. Threading简介 首先看下面的没有用Threading的程序 ): s += i time.sleep( ): s += i time. ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- python 基础学习笔记(1)
声明: 本人是在校学生,自学python,也是刚刚开始学习,写博客纯属为了让自己整理知识点和关键内容,当然也希望可以通过我都博客来提醒一些零基础学习python的人们.若有什么不对,请大家及时指出, ...
- Python基础学习笔记(十三)异常
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-exceptions.html Python用异常对象(excep ...
- Python基础学习笔记(十二)文件I/O
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-files-io.html ▶ 键盘输入 注意raw_input函 ...
- Python基础学习笔记(十一)函数、模块与包
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-functions.html 3. http://www.liao ...
- Python基础学习笔记(十)日期Calendar和时间Timer
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liao ...
- Python基础学习笔记(九)常用数据类型转换函数
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-variable-types.html 3. http://www ...
- Python基础学习笔记(八)常用字典内置函数和方法
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-dictionary.html 3. http://www.lia ...
随机推荐
- this.$nextTick( 回调函数 )的作用
首先要明确几个概念 1.Vue的核心思想 数据驱动 和 组件化系统 2.同步和异步 在没有特殊情下,程序一般先执行同步代码,等待同步执行完之后,执行异步代码 下面进入正题,首先贴出程序片段: 在该段代 ...
- 浅谈Winform控件开发(一):使用GDI+美化基础窗口
写在前面: 本系列随笔将作为我对于winform控件开发的心得总结,方便对一些读者在GDI+.winform等技术方面进行一个入门级的讲解,抛砖引玉. 别问为什么不用WPF,为什么不用QT.问就是懒, ...
- 让visual studio总是以管理员身份启动
环境 win10 visual studio 2019 步骤 找到visual studio的安装目录 怎么找? 右击win10开始菜单中visual studio的快捷方式, 依次选择 更多-> ...
- xxl-job之实现流程任务编排思路
背景 某一天一如既往的上班"旅途"中,我的领导在开早会的时候,说我最近没啥事,于是让我研究一下Activiti工作流引擎与Drools规则引擎,当时也不知道后边具体要做什么,管 ...
- Linux网络文件下载
wget 以网络下载 maven 包为例 wget -c http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-ma ...
- KafkaConsumer 简析
使用方式 创建一个 KafkaConsumer 对象订阅主题并开始接收消息: Properties properties = new Properties(); properties.setPrope ...
- 如何自己绘制fcitx4输入法皮肤?
先来给大家看看我自己修改后的结果 当然你可以自己设计,自己定义喜欢的颜色和样式 但是注意,这个教程仅仅针对使用fcitx皮肤面板的输入法,例如rime.sunpinyin等. 搜狗输入法.讯飞输入法. ...
- 实现 MyBatis 流式查询的方法
基本概念流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果.流式查询的好处是能够降低内存使用.如果没有流式查询,我们想要从数据库取 1000 万条记录而又没有足 ...
- 深入理解JavaScript垃圾回收
JavaScript中的垃圾回收是自动进行的,在平常开发中我们可能并不在意,但是深入理解JavaScript中的垃圾回收却是必要的; JavaScript 中主要的内存管理概念是 可达性,简而言之就是 ...
- prototype chain & prototype & __proto__
prototype chain & prototype & proto prototype chain MDN https://developer.mozilla.org/en-US/ ...