| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python入门学习(一) -> 正文阅读 |
|
[Python知识库]Python入门学习(一) |
目录 一.Python介绍1.Python 是解释型、面向对象的语言。由吉多·范罗苏姆(Guido van Rossum)于 1989 年发明,1991 年正式公布。官网:www.python.org 2.Python 单词是“大蟒蛇”的意思。 3.Python特点: (1)可读性强 (2)简洁? 简化开发任务 (3)面向对象 (4)免费和开源 (5)可移植性和跨平台 (6)丰富的库(丰富的标准库,多种多样的扩展库) (7)可扩展性 (可嵌入到C和C++,胶水式语言) (8)解释执行,性能较低。 ps:开发环境(IDE? Integrated Development Environme? 集成开发环境) ????????主要学习IDLE开发环境 二.程序基本格式1.逻辑行首的空白决定逻辑行的缩进层次,决定语句的分组。 2.语句从新的一列开始。 3.区分大小写 4.注释: ??????? 行注释:#注释内容 ??????? 多行注释(段注释):''' ????????????????????????????????????????????????多行注释内容 ???????????????????????????????????????????? ''' 5.\行连接符 eg:>>> a = [10,20,30,40,\ ????????????????????? 50,60,70,\ ????????????????????? 80,90,100] >>> a [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] 6.变量不需要显式声明类型。根据变量引用的对象,Python 解释器自动确定数据。 7.每个对象都有数据类型,只支持该类型支持的操作。 8.标识符:用于变量、函数、类、模块等的名称。 标识符有如下特定的规则: (1)区分大小写。 (2)第一个字符必须是字母、下划线。其后的字符是:字母、数字、下划线 (3)不能使用关键字。比如:if、or、while 等。 【操作】使用 Python 帮助系统查看关键字 ????????>>> help() ????????help> keywords (4)以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。比如:__init__是类 的构造函数 (5)模块和包名:全小写字母,尽量简单。若多个单词之间用 下划线 函数名:全小写字母,多个单词之间用下划线隔开 类名:首字母大写,采用驼峰原则。多个单词时, 每个单词第一个字母大写,其余部分小写 常量名:全大写字母,多个单词使用下划线隔开 9.变量使用必须初始化。变量名=表达式(运行过程中,解释器先运行右边的表达式, 生成一个代表表达式运算结果的对象;然后,将这个对象地址赋值给左边的变量。) 10.可以通过 del 语句删除不在使用的变量。 11.如果对象没有变量引用,就会被垃圾回收器回收,清空内存空间。 12.链式赋值用于同一个对象赋值给多个变量。x=y=123 相当于:x=123; y=123 13.系列数据赋值给对应相同个数的变量(个数必须保持一致) a,b,c=4,5,6 相当于:a=4;b=5;c=6 14.Python 不支持常量,即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值作出修改。 15.不支持自加自减。 三.编程基础概念1.程序:Python 程序由模块组成。一个模块对应 python 源文件,一般后缀名是:.py。 2. 模块:模块由语句组成。运行 Python 程序时,按照模块中语句的顺序依次执行。 3.语句: 语句是 Python 程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。 4.对象: Python 中,一切皆对象。每个对象由:标识(identity)、类型(type)、value(值) 组成。 (1)标识:用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数 id(obj) 可返回对象 obj 的标识。 (2) 类型用于表示对象存储的“数据”的类型。类型可以限制对象的取值范围以及可执行的操作。可以使用 type(obj)获得对象的所属类型。 (3) 值表示对象所存储的数据的信息。使用 print(obj)可以直接打印出值 对象的本质就是:一个内存块,拥有特定的值,支持特定类型的相关操作 5.引用:在 Python 中,变量称为——对象的引用。因为,变量存储对象的地址。 变量通过地址引用了“对象”。 ????????变量位于:栈内存(压栈出栈等细节,后续再介绍)。 ????????对象位于:堆内存 内置数据类型(1)整型:整数 ??????? 除 10 进制,还有其他三种进制: ????????·0b 或 0B,二进制 0 1 ???????? ob101=5 ????????·0o 或 0O,八进制 0 1 2 3 4 5 6 7 ????????0o10=8 ????????·0x 或 0X,十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f??????? oxff=255 ????????Python3 中,int 可以存储任意大小的整数。可以做超大数的计算,而不会造成“整数溢出”,这也是 Python 特别适 合科学运算的特点。 (2)浮点型:小数。(科学记数法:314e-2=3.14)内存中也是按照科学计数法存储。 (3)布尔型:表示真假。True、False。可以与数字相加。 (4)字符串型。 整数和浮点数进行运算:+:加法 -:减法 *:乘法 /:浮点数除法(结果默认为浮点数) //:整数除法(结果为整数,小数点后的数直接去掉) %:模(取余) **:幂?? 2**3=8 divmod():同时得到商和余数 ? divmod(13,3)—>(4, 1) ps:除数为0,会产生异常。 增强型赋值运算符:运算符+、-、*,/、//、**和%和赋值符=结合可以构成“增强型赋值运算符”。 a+=1——>a=a+1。 比较运算符:比较两个对象的值是否不相等(a=15 b=30) ==:比较对象的值是否相等????????(a == b)返回False !=:比较两个对象的值是否不相等????????(a != b) 返回 true >:返回 x 是否大于 y????????(a > b) 返回 False < :返回 x 是否小于 y ??????? (a < b) 返回true >=:返回 x 是否大于等于 y????????(a >= b)返回 False <=:返回 x 是否小于等于 y????????(a >= b)返回 true 逻辑运算符: or(逻辑或):x or y ????????x 为 true,则不计算 y,直接返回 true ,x 为 false,则返回y。 and(逻辑与):x and y ????????x 为 true,则返回 y 的值, x 为 false,则不计算 y,直接返回 false。 not(逻辑非):not x ????????x 为 true,返回 false 。x 为 false,返回true。 同一运算符:符用于比较两个对象的存储单元,实际比较的是对象的地址。 is:is 是判断两个标识符是不是引用同一个对象。a is b——>False is not:is not 是判断两个标识符是不是引用不同对象。 ps:(1)is 与 == 区别: is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。 == 用于判断引用变量引用对象的值是否相等,默认调用对象的 __eq__()方法。 is运算比==效率高。 (2)Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对 象。需要注意的是,这仅仅是在命令行中执行,而在 Pycharm 或者保存为文件执行,结果是不一样 的,这是因为解释器做了一部分优化(范围是[-5,任意正整数]) 运算符优先问题:1. 乘除优先加减 2. 位运算和算术运算>比较运算符>赋值运算符>逻辑运算符 类型转换:(1)int():????????浮点数直接舍去小数部分。????????布尔值 True 转为 1,False 转为 0. ????? 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。 (2)自动转型:整数和浮点数混合运算时,表达式结果自动转型成浮点数。 (3)float()将其他类型转化成浮点数。 *(4)round(value)可以返回四舍五入的值 注:但不会改变原有值,而是产生新的值。 时间的表示计算机中时间的表示是从“1970 年 1 月 1 日 00:00:00”开始,以毫秒(1/1000 秒) 进行计算。我们也把 1970 年这个时刻成为“unix 时间点”。 这样,我们就把时间全部用数字来表示了。 python 中可以通过 time.time() 获得当前时刻,返回的值是以秒为单位,带微秒 (1/1000 毫秒)精度的浮点。 >>> import time >>> b =time.time() 四.字符串1.编码:????????Python3 直接支持 Unicode(16位),可以表示世界上任何书面语言的字符。ASCII 码是 Unicode 编码的子集。????????使用内置函数 ord()可以把字符转换成对应的 Unicode 码;???????? 使用内置函数chr()可以把十进制数字转换成对应的字符。??????? ord(a)-->65??????? chr(66)-->'B' 2.创建字符串:(1)以通过单引号或双引号创建字符串。例如:a=’abc’; b=”sxt” 。使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。 (2)连续三个单引号或三个双引号,可以帮助我们创建多行字符串。 (3)空字符串:不包含任何字符且长度为0。 (4)len()用于计算字符串含有多少字符。 转义字符:\:续行符 \\:反斜杠符号 \':单引号 \":双引号 \b:退格(backspace) \n:换行 \t:横向制表符 \r:回车 3.字符拼接:1.可以使用+将多个字符串拼接起来。例如:’aa’+ ’bb’ ==>’aabb’。 (1) 如果+两边都是字符串,则拼接。 (2) 如果+两边都是数字,则加法运算。北京尚学堂·百战程序员 实战 系统 好教育 (3) 如果+两边类型不同,则抛出异常。 2. 可以将多个字面字符串直接放到一起实现拼接。例如:’aa’’bb’==>’aabb’ 4.字符串复制:????????使用*可以实现字符串复制。??????? a="mmm "*3==>'mmm mmm mmm ' 5.不换行打印:????????己通过参数 end = “任意字符串”。实现末尾添加任何内容:print("sxt",end='##')==>sxt## 从控制台读取字符串:????????使用 input()从控制台读取键盘输入的内容。 6.使用[]提取字符:????????通过在字符串后面添加[],在[]里面指定偏移量, 可以提取该位置的单个字符。 ????????(1)正向搜索: 最左侧第一个字符,偏移量是 0,第二个偏移量是 1,以此类推。直到 len(str)-1 为止。 ????????(2) 反向搜索: 最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str) 为止。 7.replace()实现字符串替换????????创建新的字符串来实现 ??????? a=‘asdfghjkl’ ??????? a=a.replace('a','高')==>a='高sdfghjkl' ????????整个过程中,实际上我们是创建了新的字符串对象,并指向了变量 a,而不是修改了以前的字符串。 8.字符串切片 slice 操作????????快速的提取子字符串。标准格式为: [起始偏移量 start:终止偏移量 end:步长 step] [:]提取整个字符串???????? “abcdef”[:]? (操作) ????? “abcdef” (结果) [start:]从 start 索引开始到结尾???????? “abcdef”[2:] ????????“cdef” [:end]从头开始直到end-1 ????????“abcdef”[:2]???????? “ab” [start:end]从 start 到 end-1 ????????“abcdef”[2:4] ????????“cd” ????? [start:end:step]从 start 提取到 end-1,步长是 step??????????“abcdef”[1:5:2] ????????“bd” "abcdefghijklmnopqrstuv wxyz"[-3:] ????????倒数三个???????? “xyz” "abcdefghijklmnopqrstuv wxyz"[-8:-3]???????? 倒数第八个到倒数第 三个(包头不包尾)???????? 'stuvw' "abcdefghijklmnopqrstuv wxyz"[::-1] ????????步长为负,从右到左 反向提取???????? 'zyxwvutsrqpon mlkjihgfedcba' 切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始 偏移量小于 0 则会当做 0,终止偏移量大于“长度-1”会被当成-1。 9.split()分割和join()合并split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。 如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。 示例代码如下: >>> a = "to be or not to be" >>> a.split() ['to', 'be', 'or', 'not', 'to', 'be'] >>> a.split('be') ['to ', ' or not to ', ''] join()用于将一系列子字符串连接起来。 示例代码如下: >>> a = ['sxt','sxt100','sxt200'] >>> '*'.join(a) 'sxt*sxt100*sxt200' ps: 使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用 join 函数,因为 join 函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝, 仅新建一次对象 10.字符串驻留机制和字符串比较????????字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。 Python 支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线(_)、字母 和数字)会启用字符串驻留机制驻留机制。 11.字符串比较和同一性??????? 使用==,!=对字符串进行比较,是否含有相同的字符;使用 is / not is,判断两个对象是否同一个对象,比较的是对象的地址。 12.成员操作符????????in /not in 关键字,判断某个字符(子字符串)是否存在于字符串中。 查找方法:a="asdfghjkla" len(a)??????? 字符串长度?????? 10 a.startswith("asdf")??????? 以指定字符串开头??????? TRUE a.endswith("jkla")??????? 以指定字符串结尾??????? TRUE a.find("a")??????? 第一次出现指定字符串的位置??????? 0 a.rfind("a")????????最后一次出现指定字符串的位置??????? 10 a.count("a")??????? 指定字符串出现了几次??????? 2 a.isalnum()??????? 所有字符全是字母或数字??????? TRUE 13.去除首尾信息????????我们可以通过 strip()去除字符串首尾指定信息。通过 lstrip()去除字符串左边指定信息, rstrip()去除字符串右边指定信息。 >>> "*s*x*t*".strip("*") 's*x*t' >>> "*s*x*t*".lstrip("*") 's*x*t*' >>> "*s*x*t*".rstrip("*") '*s*x*t' >>> "? sxt? ".strip() 'sxt' 14.大小写转换a="i love u." a.capitalize() ????????产生新的字符串,首字母大写????????'I love u.' a.title() ????????产生新的字符串,每个单 词都首字母大写????????'I Love U.' a.upper() ????????产生新的字符串,所有字 符全转成大写????????'I LOVE U.' a.lower()???????? 产生新的字符串,所有字 符全转成小写????????'i love u.' a.swapcase() ????????产生新的,所有字母大小写转换 ????????'I LOVE U.' 15.格式排版????????center()、ljust()、rjust()这三个函数用于对字符串实现排版。 >>> a="abc" >>> a.center(10,"*") '***abc****' >>> a.center(10) '?? abc??? ' >>> a.ljust(10,"*") 'abc*******' 其他: (1)isalnum() 是否为字母或数字 (2) isalpha() 检测字符串是否只由字母组成(含汉字)。 (3) isdigit() 检测字符串是否只由数字组成。 (4) isspace() 检测是否为空白符 (5) isupper() 是否为大写字母 (5)islower() 是否为小写字母 16.字符串的格式化????????format()基本用法: ????????>>> a = "名字是:{0},年龄是:{1}" ????????>>> a.format("ll",18) ????????'名字是:ll,年龄是:18' ????????我们可以通过{索引}/{参数名},直接映射参数值,实现对字符串的格式化,非常方便。 17.填充与对齐????????填充常跟对齐一起使用 ^、分别是居中、左对齐、右对齐,后面带宽度 :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充。 ????????>>> "{:*>8}".format("245") ????????'*****245' 18.数字格式化????????浮点数通过 f,整数通过 d 进行需要的格式化。 ??? ? ? >>>??a="名字是{0},年龄是{1:.3f}" ????????>>>a.format("小明",13) ????????'名字是小明,年龄是13.000' 19. 可变字符串字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能创建新的字符串对象。但是,经常我们确实需要原地修改字符串,可以使用 io.StringIO 对象或 array 模块。 >>> import io ?>>> s = "hello" >>> sio = io.StringIO(s) #sio此时是io.StringIO object >>> sio.getvalue() 'hello' >>> sio.seek(3) 3 >>> sio.write("b") 1 >>> sio.getvalue() 'helbo" ? ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/25 14:55:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |