Python 是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python的创始人为荷兰人吉多·范罗苏姆(Guido van Rossum)
Python语言诞生于20世纪90年代初是由 Guido van Rossum 在圣诞节期间开始编写的。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。最初,Guido 的目标是创建一种易于阅读和理解的编程语言,同时具有强大的功能。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(Monty Python’s Flying Circus)
- Web 和 Internet开发
- 科学计算和统计
- 人工智能
- 桌面界面开发
- 软件开发
- 后端开发
- 网络爬虫
- 简洁易读: Python 的语法设计简洁而直观,代码可读性高,使得开发者能够更快速地理解和编写代码。这使得 Python 成为学习编程的入门语言,并且减少了维护代码的复杂性。
- 库和框架丰富: Python 生态系统中有大量的第三方库和框架,可以方便地进行各种开发任务,如数据分析、机器学习、网络开发和图形用户界面等。这些库和框架提供了丰富的功能和工具,极大地提高了开发效率
- 跨平台性: Python 是一种跨平台的语言,可以在多种操作系统上运行,包括 Windows、Linux 和 macOS 等。这使得开发者能够轻松地在不同的平台上部署和运行他们的应用程序。
- 强大的社区支持: Python 拥有庞大而活跃的开发者社区,社区成员贡献了大量的开源项目、文档和教程。开发者可以从社区获取支持、解决问题,并与其他开发者分享经验和知识。
- 可扩展性: Python 可以与其他语言(如 C/C++)进行无缝集成,这使得开发者能够利用其他语言的性能优势,编写高效的代码。此外,Python 也支持构建模块化和可重用的代码,使得开发过程更加灵活和可扩展。
- 数据科学和机器学习的强大支持: Python 在数据科学和机器学习领域有着广泛的应用,并且拥有流行的库和工具,如 NumPy、Pandas、Scikit-learn 和 TensorFlow 等。这使得开发者能够方便地进行数据分析、建模和机器学习任务。
简单来说就是Python 具有简洁易读、丰富的库和框架、跨平台性、强大的社区支持、可扩展性以及在数据科学和机器学习方面的广泛应用等优点,这使得Python成为受欢迎且多功能的一门编程语言。
简单来说就是Python在编程语言排行第一、简单易学(初学者很容易上手)、应用场景丰富(就业方向多)
可以通过官网https://www.python.org/,点击Downloads下载。Python是一种跨平台语言,可以在各种操作系统下运行。即Windows系统的就下载Windows Installer。但Linux和MAC OS系统因为自带Python,所以不需要下载。
这里建议最好不要下载到C盘,把路径改成你容易记住的地方尽量简短。
出现这个就证明Python已经安装成功啦
最后可以试着确认Python是否已经安装好,按住Win + R,输入cmd进入终端输入where Python,如果显示有版本就说明下载成功啦。
可以通过访问官网https://www.jetbrains.com/pycharm/,下载[社区版 Community] 安装包。
下载完成后,「双击」运行安装包,开始安装。
点击下一步
选择好你要存放的路径,最好放D盘,再点击下一步
一定要全部勾选 , 再点击下一步
选择菜单文件夹界面,保持默认即可,点 安装
桌面出现图标,PyCharm安装完成
一句话,在代码中直接被写下来的固定值(数据),就叫字面量。
'abcd'
3
2.1
其实就是值(数据)的类型
常用的值类型
注:type() 语句可以查看变量存储的数据类型
单行注释 :以 #开头 ,#右边所有的文字都是说明,不会干扰程序运行,起辅助说明作用
多行注释 :用一对三引号 引起来,同样是辅助说明
# 这是单行注释
"""
这是多行注释
"""
在Python中被引号包围住的,都是字符串。(引号可以是单引号、双引号还可以是三引号)
注:三引号既可以表示字符串同时也是注释的一种方法
下面是字符串的三种定义形式
text1 = '我是字符串的一种形式'
tetx2 = "我也是字符串的一种形式"
text3 = """能做注释,也能用来当字符串"""
"""
这里是多行注释
"""
name = 'hel'
print(name+'lo')
# 结果为:hello
注:字符串无法和非字符串变量进行拼接
通过字符串的格式化,我们可以完成字符串和变量的快速拼接
% 表示占位符,且在无需使用变量进行数据存储的时候,可以直接格式化表达式(变量的位置放入表达式)
字符串的快速格式化
语法:通过f"内容{变量}" 的格式来快速格式化
name = '小明'
age = 18
print(f'我叫{name},今年{age}岁')
# 打印结果为: 我叫小明,今年18岁
注意:这种写法不做精确控制,不需要理会变量类型
标识符:是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名
标识符命名 中只允许出现: 英文 中文 数字 下划线(_) 这四类元素。
注意:标识符最好不要出现中文,不能以数字开头,且不能以关键字命名
可以通过以下方法查看Python中的关键字
import keyword
print(keyword.kwlist)
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
运算符分为为算术运算符、赋值运算符、比较运算符、逻辑运算符和成员运算符等等。
条件的结果返回布尔值(True或False)
条件的结果返回布尔值(True或False)
条件的结果返回布尔值(True或False)
Python中使用input() 函数进行数据的输入
name = input('请输入你的名字:')
print(f'我叫{name}')
# 请输入你的名字:小明
# 我叫小明
注意:无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型
if 条件语句(判断条件):
代码块 #该代码执行就是if后面的判断成立与否(True)就执行,否则不执行
# if True 执行代码块
x = 5
if x > 0:
print('x是正数')
# x是正数
归属于if判断的代码语句块,需在前方填充4个空格缩进
注意:Python通过缩进判断代码块的归属关系
if 条件语句(判断条件):
代码块 #该代码执行就是if后面的判断成立与否(True)就执行,否则不执行
# if True 执行代码块
elif 判断条件:
代码块
#就是if后面的判断如果不成立那就会执行该代码块,否则不执行
else:
代码块
#就是if和elif后面的判断如果不成立那就会执行该代码块,否则不执行
x = -1
if x > 0:
print("正数")
elif x == 0:
print('x等于0')
else:
print('x是负数')
# x是负数
while 循环条件:
执行语句
更新语句
# 只要当满足循环条件的时候才会执行(循环结构为真(True)的时候才会执行)
num = 0
while num < 10:
print('小明',num)
num += 1 # num += 1 --> num = num+1
# 必须要有条件的更新,否则就是一个死循环
for 变量名 in 可迭代对象(字符串,列表,元组,字典,集合):
代码
str1 = '今天的天气真的好好呀'
for i in str2:
print(i) # i是一个变量可以随便取,i是容器里面的每一个元素
用于获得一个数字序列
语法1:range(num)
从0开始,到num结束(不含num本身)
语法2:range(num1, num2)
从0开始,到num结束(不含num本身)
语法3:range(num1, num2, step)
从0开始,到num结束(不含num本身)
for i in range(5):
print(i)
break:终止:跳出循环
continue:跳过本次循环,继续下一次循环
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素。 每一个元素,可以是任意类型的数据
表示方法:
变量名 = [值1, 值2, 值3, ...]
定义空列表
变量名 = [] # 方法1
变量名 = list() # 方法2
表示方法:
变量名 = (值1, 值2, 值3, ...)
定义空元组
变量名 = () # 方法1
变量名 = tuple() # 方法2
注意:元组是不可变的数据类型,这意味着一旦创建了元组,就无法修改其内容(没有添加、删除和修改元素的方法)
表示方法:
变量名 = {键1: 值1, 键2: 值2, 键3: 值3, ...}
定义空字典
变量名 = {} # 方法1
变量名 = dict() # 方法2
表示方法:
变量名 = {值1, 值2, 值3, ...}
定义空集合
变量名 = set() # 只有一种方法
函数:封装具有某种功能的代码块
自定义函数:将一段有规律的,可以重复使用的代码定义成函数,一次编写,多次调用
上面提到的函数:len() range() type() print() input()…这一些都是内置函数,可以直接使用的函数
#定义函数
def 函数名():
函数体(就是函数具体功能的代码)
#调用函数
函数名()
# 定义函数
def fun1():
print('这是我的第一个函数')
print('hello')
# 调用函数
fun1()
格式:
#定义函数
def 函数名(形式参数/形参):
函数体(就是函数具体功能的代码)
#调用函数
函数名(实际参数/实参)
def fun2(a):
print(a)
name = '小明'
fun2(name)
形式参数(形参):就是一个参数名,没有任何数值,在函数里面, 形参就位于定义函数的括号内
实际参数(实参):有实际的数值,位于调用函数时函数名后面的括号内
函数在实现参数和调用参数的过程叫做:传递参数(传参)
就是必须按照正确的顺序来将实际参数传入到函数中
def hello(name):
print(f'hello,我叫{name}')
hello('小明')
形参和实参的数量要一致
注意函数参数的位置,实参和形参必须一一对应
在函数定义的时候,就写好了参数值,在后续调用参数就可以不用传参.如果在使用调用函数的时候传入参数,原来的参数值就会被覆盖
def name(n='小明'):
print(f'我的名字是{n}')
name()
name('小红') # 第二次调用传参把原来的参数值给覆盖了
# 我的名字是小明
# 我的名字是小红
注意: 定义默认参数的很好,一定要注意参数的位置–>默认参数一定要做必须参数的后面
就是在函数传入参数的时候,可以通过参数名来指定
格式:参数名= 参数值
def info(name,age):
print(f'姓名:{name}')
print(f'年龄:{age}')
info(age=18,name='小明')
"""
姓名:小明
年龄:18
"""
不需要担心参数的位置
在参数名前加一个*,该值就是可变参数,可以接收多个参数值,也可以不没有.接收的实参必须是位置参数形式
def fun1(name ,age,*args):
print(name, age,args)
#print(args)
fun1('小明',18)
fun1('小明',18,'','python讲师','家乡湖南')
该参数接收对于的参数值,全部保存在元组中
在参数名前加一个**,该值就是可变参数,可以接收多个参数值,也可以不没有.接收的实参必须是关键字参数形式
def fun2(**kwargs):
print(kwargs)
fun2(name = '小明',job ='老师',age = 18)
# {'name': '小明', 'job': '老师', 'age': 18}
该参数接收的参数值,是以字典的形式保存,其中参数名就是key,参数值就是value
返回值 =return, 就是把值返回给函数本身
格式:
def 函数名(形参):
代码块
return 返回值
可以把函数里面的代码理解为过程,返回值表示的是结果
ASCII(American Standard Code for Information Interchange)是一种使用7位二进制编码表示字符的字符集。它最初是为英语和西欧语言设计的,并包括基本的拉丁字母、数字、标点符号等。ASCII编码只能表示128个字符,无法表示其他语言的字符。
GBK(Guo Biao Ku,国标码)是中文编码字符集,是中国国家标准GB 2312的扩展版本。它使用双字节编码,可以表示中国大陆的简体中文字符。GBK编码包含了GB2312的字符,并增加了更多中文字符和符号,总共可以表示21886个字符。
Unicode是一种字符集,它为世界上的各种语言和符号提供了唯一的编码值。Unicode字符集收录了几乎所有已知的字符,包括不同语言的字符、符号、标点符号以及各种技术和专业领域的特殊字符等。每个字符都有唯一的Unicode编码值,可以用整数表示。
UTF-8(Unicode Transformation Format-8)是一种针对Unicode的可变长编码方案。它使用一至四个字节来编码Unicode字符,以便在计算机中存储和传输。UTF-8编码可以表示世界上几乎所有的字符,包括ASCII字符和非拉丁字符。由于UTF-8编码的灵活性和广泛应用,它已成为互联网上最常用的字符编码方式。
utf-8收集世界上大部分国家的语言文字,然后整合一套编码(万国码)
mode常用的三种基础访问模式:
# 第一步:打开文件
with open('python.txt', 'w') as f:
# 第二步:文件写入
f.write('hello, 我叫小明')
# 第三步:内容更新
f.flush()
- 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
- 当调用flush的时候,内容会真正写入文件
- 这样做会频繁的操作硬盘,导致效率下降
模块(Module),是一个 Python 文件,以 .py 结尾. 模块能定义函数,类和变量,模块里也能包含可执行的代码
从物理上看,包就是一个文件夹,在该文件夹下自动创建了一个 _ init _.py 文件 ,该文件夹可用于包含多个模块文件 从逻辑上看,包的本质依然是模块
常用的组合形式如:
import 模块名/包名
from 模块名/包名 import 类、变量、方法等
from 模块名/包名 import *
import 模块名/包名 as 别名
from 模块名/包名 import 功能名 as 别名
python自带的 不需要下载,直接去使用 #模块需要导入
import random # 随机模块
import time # 时间模块
import os # 系统模块
.....
由其他开发技术人员写的代码,需要下载,才能使用
requests # 爬虫
pygame # 游戏开发
pywin32 # Windows编程
...
# 去终端下载模块
pip install 模块名
# pip install requests
# 卸载模块
pip uninstall
# 查看模块
pip list
第三方模块是下下个班详细讲的内容, 目前知道就可以了
# 更新pip
python -m pip install --upgrade pip -i
面向对象是一种编程范式,它将程序中的数据和操作封装在一个对象中,从而使得程序更加模块化、可重用和易于维护。在面向对象编程中,对象是类的实例化,类是一种抽象的数据类型,它定义了一组属性和方法。
面向对象编程的核心思想是封装、继承和多态。封装是将数据和操作封装在一个对象中,隐藏对象的内部实现细节,只暴露必要的接口给外部访问。继承是通过继承父类的属性和方法,来创建一个新的子类,子类可以重写父类的属性和方法,从而实现更加灵活的功能。多态是指同一个方法可以根据不同对象的实现方式,实现不同的行为。
class 类名:
类代码(属性,行为)
# 类名的定义:使用大驼峰命名方式(所有单词首写字母大写)
class Dog:
# 类属性
name = '狗'
# 类方法
def run(self):
print('会跑')
# 定义类之后没有实例化对象执行代码,类中的代码也是会执行
# 定义在类中变量称为属性,函数为方法
- _ init_ 初始化方法,实例化方法,魔法方法,构造方法,该方法再初始化对象的时候被调用,通常情况用在设计对象的属性,该方法再实例化对象的时候会自己调用执行,不需要手动调用
- 类中的每个方法在创建的时候基本上都自动定义了一个self参数
self:用来表示对象本身的
class People:
# 类属性(类属性是所以对象共同的属性)
age = 18
name = '人类'
# 初始化方法
def __init__(self):
# 对象属性(实例化属性)
self.name = '帅哥'
def run(self):
print(f'{self.name}在跑步')
# 创建对象
yumo = People()
laoli = People()
print(yumo.name)
print(laoli.name)
print(yumo.age)
"""
帅哥
帅哥
18
"""
概念:封装是指将数据和行为打包到一个类中,并可以控制外部访问的级别。封装可以保护数据和方法的访问,并且提高代码的可维护性。我们可以利用访问控制修饰符来实现封装,包括公有、私有、受保护和包访问等四种级别。
class Dog:
'''
类文档
这个是类的说明
'''
# 类属性
name = '哈士奇'
sex = '母'
def __init__(self,name,age,weight):
self.name = name
self.age = age
self.weight = weight
def sleep(self):
print(f'{self.name}在大门口睡大觉')
def eat(self):
print(f'{self.name}想吃饭,体重{self.weight},过重不然吃')
erha = Dog('二哈',2,50)
print(erha.name)
print(erha.age)
print(erha.sex)
erha.sleep()
erha.eat()
概念:继承是指一个类可以从父类中继承方法和属性。如果父类的某个属性或方法也在子类中定义了,那么子类会重写父类的属性或方法,这样子类可以更好地针对自己的特定要求来实现相应的功能。
# 师傅类
class Master(object):
def __init__(self):
self.gf = '葵花点穴手'
def batttle(self):
print(f'运用了{self.gf}在江湖在无对手')
# 定义一个徒弟
class Prentice(Master):
pass
ym = Prentice()
print(ym.gf)
ym.batttle()
概念:多态是指对象可以用多种形态来引用。这样做可以使代码更加灵活,因为同样的操作可以应用于不同的类型。
class OtherBank(Bank):
# 存款
def set_money(self,k_money):
if self.money + k_money >= 5:
super().set_money(k_money-5)
else:
print('穷鬼一个,手续费都不够')
# 取款
def get_money(self, k_money):
if self.money >= k_money+5:
super().get_money(k_money+5)
else:
print('穷鬼')
ym = OtherBank(123,456,20)
ym.set_money(3)
ym.set_money(3000)
ym.get_money(1)
异常:就是在程序执行过程中有逻辑或者其他的错误导致的,是的程序终止运行
异常处理:在程序执行的过程中,发现错误对其进行处理,让程序可以正常执行不为此错误而被迫停止运行
# 常见错误
name error:名称错误-->使用未定义的变量导致的错误
SyntaxError:语法错误-->由于代码存在拼写错误,缺少冒号等导致的错误
TypeError:类型错误-->针对无效的数据类型进行操作导致的错误
indexerror:数组越界错误,访问列表,元组字典不存在的元素导致的错误
file Not Found error:文件不存在错误:打开不存在的文件导致的错误
语法格式:
try:
代码块(感觉有错误的代码)
exceprt 异常类型:
判断到上面的代码有异常之后执行的代码
else:
代码没有异常执行的代码
finally:
不管代码有没有错误都会执行代码
# 在异常类型加as 变量名 ,可以获取到异常的信息
# Exception: 可以捕获所以的异常
发送AssertionError异常错误
assert 判断表达式,返回异常信息(当判断表达式为False才会执行)
# 表达是bool类型才可以进行使用
raise Exception(返回的异常信息)
有时候,在程序中可以需要自定义异常来报答特定的错误或者整体消息
在python中,可以通过继承Exception类来定义自己的异常类.
以上就是全部内容啦,如有错误以及不足之处,请大佬们及时指出。愿与大家一起共同进步!