几个概念
- 表达式
- 语句
- 程序(program)
- 函数(function)
-
表达式
表达式就是一个类似于数学公式的东西
比如:10 + 5 8 - 4
表达式一般仅仅用了计算一些结果,不会对程序产生实质性的影响
如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出 -
语句
在程序中语句一般需要完成某种功能,比如打印信息、获取信息、为变量赋值。。。
比如:
print()
input()
a = 10
语句的执行一般会对程序产生一定的影响
在交互模式中不一定会输出语句的执行结果 -
程序(program)
程序就是由一条一条的语句和一条一条的表达式构成的。 -
函数(function)
函数就是一种语句,函数专门用来完成特定的功能
函数长的形如:xxx()-
函数的分类:
- 内置函数
- 由Python解释器提供的函数,可以在Python中直接使用
自定义函数 - 由程序员自主的创建的函数
- 由Python解释器提供的函数,可以在Python中直接使用
- 内置函数
-
当我们需要完成某个功能时,就可以去调用内置函数,或者自定义函数
函数的两个要素:- 参数
- ()中的内容就是函数的参数
- 函数中可以没有参数,也可以有多个参数,多个参数之间使用,隔开 - 返回值
- 返回值是函数的返回结果,不是所有的函数都有返回值
- 参数
-
变量
print(type(1))
print(type(1.5))
print(type(True))
print(type('hello'))
print(type(None))
类型检查结果.png
对象(object)
- Python是一门面向对象的语言
- 一切皆对象!
- 程序运行当中,所有的数据都是存储到内存当中然后再运行的
- 对象就是对象就是内存当做专门用来存储指定数据的一块区域
- 对象实际上就是一个容器,专门用来存储数据
- 像上面的数值、字符串、布尔值、None都是对象
对象的结构
每个对象中都要保存三种数据
- id(标识)
用来标识对象的唯一性
id() 函数
返回对象的唯一标识符,标识符是一个整数,
id是由解析器生成的,在CPython中,id就是对象的内存地址
对象一旦创建,id永远不能改变 - type(类型)
类型用来标识当前对象所属的类型
比如:int str float bool ...
类型决定了对象有那些功能
Pyhon是一门强类型的语言,对象一旦创建类型便不能改变 - value(值)
值就是对象中存储的具体的数据
对于有些对象值是可以改变的
对象分成两大类,可变对象,不可变对象
print函数详解
print(value,..., sep=' ', end='\n')
- sep 表示变量之间间隔 默认为一个空格
- end 表示输出流结尾 默认为换行符
name = "小白"
age = 15
gender = "boy"
print(name,age,gender)
print(name,age,gender,sep='-')
print("AAA")
print("BBB")
print("CCC")
print("AAA",end="")
print("BBB",end="")
print("CCC",end="")
print输出样例.png
三引号的用法
- python中三引号可以将复杂的字符串进行复制:
- python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
- 三引号的语法是一对连续的单引号或者双引号(通常都是成对的用)。
chat = """How are you?
I'm fine,thank you,and you?
Me too!"""
print(chat)
输出结果样例.png
- 多行注释:
- Python中的注释是用# ,但是#通常是单行注释,在注释有多行时,每一行多要写一个# ,而用""""""却可以一次性解决
'''
我是个成熟的注释
已经学会了自己注释多行
'''
字符串函数
message = "Hello Python Crash Course world!"
print(message.title())
print(message.upper())
print(message.lower())
title()首字母大写
upper()全部大写
lower()全部小写
效果图
字符串格式化输出
1. 使用占位符 %d %s %f
str(18)
<==> 18--->'18'
str(int)强制类型转换(int->str)
%d digit 数字
int(18.5)
<==> 18.5--->18
%f
%.1f
保留到十分位,四舍五入
movie = "唐人街探案3"
ticket = 49.9
count = 28
total = ticket * count
message='''
电影:%s
人数:%d
单价:%.1f
总票价:%.1f
''' % (movie, count, ticket, total)
print(message)
占位符样例.png
2. format函数
format是字符串中的一个函数" ".format() 此处的'.' 调用
age = 15
s = "已经上"
money = 3.14
message = "乔治说:我今年{}岁了,{}幼儿园了,有零花钱:{}".format(age, s, money)
#message = f"乔治说:我今年{age}岁了,{s}幼儿园了,有零花钱:{money}"
#效果一样
print(message)
format样例.png
input的使用
name = input("请输入名字:")
阻塞式
input(prompt=None) --->标准的输入流(键盘输入的都是字符串)
input() #阻塞
admin+回车 --->name ‘容器’ 接收流中的信息
运算符
1. 赋值运算符
name = 'name'
将'admin'的值赋给 变量name
= += -= *= /=
拓展的运算符:
-
**
: 幂运算3**4
<==>3*3*3
-
//
: 整除运算9//2=4
(向下取整) -
%
: 取余运算9%2=1
2. 关系运算符
在python中定义变量会有:id,type,value
因此,对于相同value的变量,它的type相同,但是它的id值可能不一样。对于相同id的变量,它的type和value值肯定是一样。
-
==
比较的是value !=
-
is
比较的是id -
>
或<
python 变量之小整数池跟大整数池
- 在交互式模式下
- Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。
- intern机制处理空格一个单词的复用机会大,所以创建一次,有空格创建多次,但是字符串长度大于20,就不是创建一次了。
- 终端是每次执行一次,所以每次的大整数都重新创建
- 在pycharm中,
每次运行是所有代码都加载都内存中,属于一个整体,所以这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象。我们只需要记住这是一种优化机制,至于范围到底多大,无需细究。
3. 逻辑运算符
and
:逻辑与
or
:逻辑或
not
:逻辑非
运算结果返回True或False
当我们对非布尔值进行运算时,Python会将其当做布尔值运算,最终会返回原值
优先级:() > not > and > or
混合例子与解析:
print(1 > 2 and 3 or 4 and 3 < 2 or not 4 > 5)
按照从左向由,优先级高的先执行优先级高的规则,首先因为比较运算符优先级高于逻辑运算符,很简单,如果运算符低于了逻辑运算符优先级那还如何运算呢。and 优先级大于 or,not优先级大于and和or
not 4 > 5 为True
1 > 2 为 False
3 < 2 为 False
Flase and 3,因为False为假所以and不在运算直接返回False
4 and False,因为4为真所以and运算符会继续运算后面的,以False为主,所以返回False。
False or False,为False
False or True,因为False为假,所以or运算符会继续运算后面的,以True为主,所以返回后面的True值。
逻辑运算符补充
1<2<3
相当于1 < 2 and 2<3
同理10 < 20 >15
则返回True
位运算符
1. 进制
bin()
函数
a=3
print(bin(a)) #输出结果0b11
b=0b10111 #0b 二进制
#0o 八进制
#0x 十六进制
print(int(b)) #输出结果13
0b 二进制
0o 八进制
0x 十六进制 0-9 a-f
字节byte 8个二进制位bit构成一个字节byte
1kb = 1024byte
5 的二进制表示0000 0101
-5的二进制表示1111 1011
求法:
5 : 0 0 0 0 0 1 0 1
取反(反码) : 1 1 1 1 1 0 1 0
+1 : 1 1 1 1 1 0 1 1
所以-5的二进制表示1111 1011
2. 运算符(操作数值变量)
&
:与
|
:或
!
:非
^
:异或 相同的是0 不同的是1
<<
:左移 m<<n
<==> m*2的n次方
>>
:右移 m>>n
<==> m整除2的n次方
~
:取反 将十进制的数字对应的二进制进行取反操作
三元运算符
格式:语句1 if 表达式 else 语句2
运算符的优先级
排序:
**
~
+ - (符号运算符)
* / // %
+ -(加减)
<< >>
&
^
|
== != > >= < <=
= %= /= //= -= += *= **=
is is not
not
and
or
网友评论