python

python发展史

Python之父,荷兰人Guido van Rossum。他于1982年从阿姆斯特丹大学取得了数学和计算机硕士学位。

20世纪80年代中期,Python之父Guido van Rossum还在CWI(数学和理论计算机科学领域的研究中心,位于阿姆斯特丹)为ABC语言贡献代码。ABC语言是一个为编程初学者打造的研究项目。ABC语言给了Python之父Guido很大影响,Python从ABC语言中继承了很多东西:比如字符串、列表和字节数列都支持索引、切片排序和拼接操作。

在CWI工作了一段时间后,Guido构思了一门致力于解决问题的编程语言,他觉得现有的编程语言对非计算机专业的人十分不友好。于是,1989年12月份,为了打发无聊的圣诞节假期,Guido开始写Python的第一个版本。值得一提的是Python这个名字的由来,Python有蟒蛇的意思,但Guido起这个名字完全和蟒蛇没有关系。当Guido在实现Python的时候,他还阅读了Monty Python’s Flying Circus的剧本,这是来自一部来自20世纪70年代的BBC喜剧。Guido认为他需要一个简短、独特且略显神秘的名字,因此他决定将该语言称为Python

1991年,Python的第一个解释器诞生了。他是由C语言实现的,有很多语法来自C,又受到了很多ABC语言的影响。有很多来自ABC语言的语法,知道今天还很有争议,强制缩进就是其中之一。要知道,大多数语言都是代码风格自由的,即:不在乎缩进有多少,写在哪一行,只要有必要的空格即可。而Python是必须要有缩进的,这也导致了很多其他语言的程序员开玩笑说“Python程序员必须会要用游标卡尺。”

Python1.0版本于1994年1月发布,这个版本的主要新功能是lambda, map, filter和reduce,但是Guido不喜欢这个版本。

六年半之后的2000年10月份,Python2.0发布了。这个版本的主要新功能是内存管理和循环检测垃圾收集器以及对Unicode的支持。然而,尤为重要的变化是开发的流程的改变,Python此时有了一个更透明的社区。

2008年的12月份,Python3.0发布了。Python3.x不向后兼容Python2.x,这意味着Python3.x可能无法运行Python2.x的代码。Python3代表着Python语言的未来。

查看源图像

1.Hello Python

  • 安装完成之后打开cmd命令行,输入python检查是否安装成功
  • 输入print(‘Hello python’)

在这里插入图片描述

2.python的语言性质

  • python是一种解释型语言,代码直接通过解释器解释,无需编译
  • python是一门面向对象的语言,在python里,一切皆对象。
  • python也是一门强类型的语言,也是一种动态的语言,亦可以做脚本,整体与JavaScript较为类似
  • python与Java在语法上有比较大的区别,所以以前学过Java但是没有学过python的同学需要认真注意细节
  • 在python中有两种类型的注释一种是行注释 用一个# ,另一种是块注释用三对引号
# 这是单行注释

"""
这是块注释
"""
'''
这也是块注释
'''

3.标识符与关键字

andasassertbreakclasscontinue
defdelelifelseexceptfinally
forfromFalseglobalifimport
inislambdanonlocalnotNone
orpassraisereturntryTrue
whilewithyield

需要注意的是,由于 Python 是严格区分大小写的,保留字也不例外。所以,我们可以说 if 是保留字,但 IF 就不是保留字。

  • 标识符:即变量名,函数名,类名等
  • python的标识符命名规则:由数字、字母、下划线组成,不能以数字开头,不能跟关键字重名
  • python的的变量定义不需要申明类型,也不需要分号结尾
  • Python命名规范同样遵循驼峰命名法
  • 代码规范遵循PEP8标准

4.数据类型

内置数据类型

在编程中,数据类型是一个重要的概念。

变量可以存储不同类型的数据,并且不同类型可以执行不同的操作。

在这些类别中,Python 默认拥有以下内置数据类型:

文本类型:(基本数据类型)str
数值类型:(基本数据类型)int, float, complex(了解复数类型,科学计数法)
序列类型:(引用数据类型)list, tuple, range
映射类型:(引用数据类型)dict
集合类型:(引用数据类型)set, frozenset
布尔类型:(基本数据类型)bool
二进制类型:(了解)bytes, bytearray, memoryview
  • 我们可以用type()函数来查看一个变量的数据类型,可以用id() 来查看变量的id

a = 10
b = "hello"
c = 3.0
d = True

print(type(a))  # <class 'int'>
print(type(b))  # <class 'str'>
print(type(c))  # <class 'float'>
print(type(d))  # <class 'bool'>


# 字符串的其他表示形式
b = 'hello'
print(b)
b = '''hello'''
print(b)
  • 类型转换
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/8/6 23:45
# @Author  : GHong


a = 10.1
b = "10.1"

a = int(a)
print(a)   # 10
print(type(a))  # <class 'int'> float --> int

a = str(a)
print(a)  # 10
print(type(a))  # <class 'str'> int --> str

# b = int(b)  # ValueError  错误,原因字符串去掉括号的数值是一个float,一次性只能做一级转换

b = float(b)
print(b)  # 10.1
print(type(b))  # <class 'float'> str --> float

c = True
c = str(c)
print(c)  # True
print(type(c))  # <class 'str'> bool --> str

c = bool(c)
print(c)  # True
print(type(c))  # <class 'bool'> str --> bool  注意!这里并不是因为字符串是True才转换成True,这里只要
print("--------")  
print(bool("False"))  # True
print(bool(""))  # 除非是空串  --> False
print("--------")

c = int(c)
print(c)  # 1
print(type(c))  # <class 'int'> bool --> int

5.运算符

  • 算术运算符

    • +、-、*、/
    • %、**(幂运算)、//(整除)
  • 赋值运算符

    • =
    • +=、-=、*=、/=、*=、**=、%=、//=
  • 注意,在python中没有 i++,i–等

  • 比较运算符

    • >、<、==
    • >=、<=、!=
  • 成员运算符

    • in
    • not in
运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
  • 逻辑运算符
    • and
    • or
    • not
运算符逻辑表达式描述实例
andx and y布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。(a and b) 返回 20。
orx or y布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。(a or b) 返回 10。
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False
  • 身份运算符
    • is
    • is not

身份运算符用于比较两个对象的存储单元

运算符描述实例
isis 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is notis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

注: id() 函数用于获取对象内存地址

  • 位运算(了解)
    • & 、|、 ^
    • ~、<<、>>
运算符描述实例
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释: 0000 1100
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 61 ,二进制解释: 0011 1101
^按位异或运算符:当两对应的二进位相异时,结果为1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1(~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
<<左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000
>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111
a = 10
b = 10.1
c = "你好"
bool = True

print(a + b)  # 20.1
# print(a + c) # TypeError
print(a+bool) # 11  True 会自动转换成 1 False 会自动转换成0

  • 当不同类型的数据进行运算时,解释器会自动向高级别的类型进行转型,如果无法转为同一类型的会报TypeError
str = "*"
print(str * 100)  # 会打印出100颗星
  • 如果int类型跟一个字符串做乘法,解释器会认为重复该字符n次
a = 10
b = 20
print(a > b)  # False 比较运算后会得到一个bool类型值

list = [0, 2, 4, 8]
print(a in list)  # False 成员运算符也是会得到一个bool类型数值

print(a is 10)  # True  身份运算符也是获得一个bool类型值
  • 逻辑运算解析
a = 10
b = 20
c = 30

print(a < b or c < b)  # True  or 相当于Java中的 ||
print(a < b and c < b)  # False and 相当于 &&
print(not a < b)  # False not 取反
  • ** 、 //
a = 10
b = 3
print(a ** b)  # 1000  // 幂运算  10^3
print(a // b)  # 3  整除,相当于取整数部分
print(a % b)  # 1  取余数部分

Python运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:(可以通过括号改变优先级,无序记忆)

运算符描述
**指数 (最高优先级)
~ + -按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % //乘,除,取模和取整除
+ -加法减法
>> <<右移,左移运算符
&位 ‘AND’
^ |位运算符
<= < > >=比较运算符
<> == !=等于运算符
= %= /= //= -= += *= **=赋值运算符
is is not身份运算符
in not in成员运算符
not and or逻辑运算符
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐