5月22号,Python变量和类型

在这里插入图片描述

1 几个概念

1.1 表达式

  • 类似于数学公式的东西
  • 举例:1+1;2*4
  • 结论:表达式不会对我们的程序产生实质性的影响,一般仅用于计算一些结果。如下图:
    在这里插入图片描述
    如何让表达式产生影响呢?如下图,print(1+2),输出的就是3:
    在这里插入图片描述

1.2 语句

  • 定义:由一个词或句法上有关联的一组词构成
  • 功能:在程序中一般用语句来完成某种功能
  • 注意:交互模式中不一定会输出语句的执行结果

1.2.1 if语句

我们在Pycharm中输入如下语句:

a=6;
if a>5:
    print('Hello')
    print('123')
    print('abc') 

输出结果为:

Hello
123
abc

补充一下:这里:

print('Hello')
print('123')
print('abc') 

就是一个代码块,即要执行一起执行,要不执行都不执行

1.2.2 pass语句

  • 一个空(null)操作,在执行时没有任何反应,是为了保持程序结构的完整性。 pass 不做任何事情,一般用做占位语句
  • 例如,输入如下代码:
for letter in 'Python':
    if letter == 'h':
        pass
        print('This is pass block')
    print('Current Letter :', letter)
print("Good bye!")

运行结果如下:

Current Letter : P
Current Letter : y
Current Letter : t
This is pass block
Current Letter : h
Current Letter : o
Current Letter : n
Good bye!

1.3 程序

  • 程序 = 语句 + 表达式
  • 换言之,程序就是由一条条语句和一条条表达式构成的(其中语句比较简单,真正难学的是表达式)

1.4 函数

  • 函数就是一个语句,函数是为了完成特定的功能
  • 形如:XXX()
  • 例如:print()

这里着重说一下print函数的用法:

print(value,...,sep='  ',end='\n',file=sys.stdout,flush=False)

举例说明如下:

user_name='Shero'
user_age=22
# 同时输出多个变量和字符串,指定分隔符
print('作者:',user_name,' 年龄:', user_age, sep='|')

结果为:

作者:|Shero| 年龄:|22

file参数的作用是指定print()函数的输出目标:

f=open('poem.txt',"w")
print('wuyuge',file=f)
print('Shero',file=f)
f.close()

此时在同一个project中新建了一个名为poem.txt的文档,内容为:

在这里插入图片描述

1.4.1 函数的分类

  • 内置函数(或称内建函数)built-in
    Python语法规定存在的函数,Python自带的函数,可以直接用,亲生的!
    我们可以进入Python官网查询Python3.6自带的函数,官方对每一个都进行了详细的解释:

在这里插入图片描述

  • 自定义函数
    以关键字 def 开头,函数名要符合标识符命名规范,XXX()。语法如下:
def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]

举例:

# 定义函数
def printme( str ):
   "打印传入的字符串到标准显示设备上"
   print(str)
   return

1.4.2 函数的参数

def functionname( parameters ):

其中括号中parameters的内容表示函数的参数,可以一个或多个,多个要用英文逗号隔开。如下:

在这里插入图片描述

1.4.3 函数的返回值

举例如下:

在这里插入图片描述
但要注意,并不是所有函数都有返回值

2 标识符

先为大家引入Python语言的八大组成,这里注意,这八个组成在所有语言中基本通用,只不过不同语言表现形式不同,但其编程思想是一模一样的。
在这里插入图片描述
正如上图中提到的,标识符的命名:

name1
1name (不能以数字开头)
print=3,print(print) (不要使用内建函数的名称)

进一步,在Pycharm中我们可以用下面的代码来查看所有的关键字:

import keyword
print(keyword.kwlist)

得到如下关键字:
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘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’]

3 基本数据类型

  • 定义:变量值的类型,也就是可以为变量赋哪些值

3.1 整型

  • int型,其最大固定值异常大,大到无法想象
  • 如果一个数非常大,可以使用下划线来分割

在这里插入图片描述

3.2 浮点型

  • float型,如a=1.2,b=6.6
    在这里插入图片描述
    这里为什么会出现0.1+0.2,输出结果为0.30000000000000004呢?

原因:进制的转化导致小数运算会得到不太精确的结果。0.1、0.2是十进制,计算机在运算前会先把它们转化成二进制,如0.1转换成二进制为0.0001100110011001100110011001100110011001100110011001101(见进制转换网站)但是,其实该结果已经无限接近0.3了,其产生的误差可以忽略不计,且其它的语言(只要支持浮点型)都有这个问题。

输入如下代码:

print(1+2)
print(1.0+2)
print(1.0+3.0)
print(1*2)
print(1.0*2)
print(1.0*2.0)

得到:

3
3.0
4.0
2
2.0
2.0

因此我们不难发现一个规律:运算中有浮点数,返回的结果类型就是浮点型

3.3 布尔型

  • 只有两个值,True 和 False
  • 表示逻辑判断

这里,我们输入1+‘1’,显示无法运算:
在这里插入图片描述
下面我们又输入 1+True 和 1+False ,结果如下:
在这里插入图片描述
这说明:布尔类型实际上也属于整型,True相当于1,False相当于0

同时,下面相当于写了一个死循环:
在这里插入图片描述
这里的while True: 也可以写成 while 1:,是一样的。

3.4 空值

  • None,表示不存在
  • 返回None证明返回的结果有问题

4 变量

  • 计算机内存中的一块区域
  • 通俗地讲,变量就是给数据起个名字
  • 可用于保存字面量(字面的值)
  • 变量命名也要符合标识符命名的规范,详见第2小节
  • 例如,a=3,相当于标签a贴在了对象3上面

Python为每个对象开辟了内存空间,区域和区域要划分开

这里尤为注意的是:

两个对象相等 ≠ 两个对象是同一个对象

如何理解?请看例子。
输入如下代码:

s1={'Shero':'Python'}
import copy
s2=copy.deepcopy(s1)
print(s2)
print(id(s1))
print(id(s2))
print(s1==s2)

得到

{'Shero': 'Python'}
1370186653560
1370186707304
True

这里用到的 id() 函数是用来检查两个对象返回的结果是不是同一个对象的函数,结果相等,说明它们的内存空间一样,是同一个区域。

因此,由s1==s2返回的值是True知道两个对象相等,满足等式左边;又由id(s1)≠id(s2),说明不是同一个对象。

更为形象一点的理解就是,两个双胞胎,看起来一模一样,但它们终究不是同一个人。

在这里插入图片描述

5 字符串

5.1 入门

  • 一对单引号或一对双引号所包裹的内容就是字符串
    我们用 type() 函数查看数据类型,输入:
print(type(522))
print(type('522'))
print(type(5.22))
print(type(True))
print(type(None))

得到:

<class 'int'>
<class 'str'>
<class 'float'>
<class 'bool'>
<class 'NoneType'>

而当我们输入a='abc"时,出现报错:

同样,输入a='what's up?',也出现了报错:
在这里插入图片描述
原因:解释器分不清哪两个引号是一对
怎么解决?

  • 办法一:改成双引号,此时就没有问题了。
    在这里插入图片描述
  • 办法二:用到5.2 小节中介绍的转义字符,这里先给出解决结果。
    在这里插入图片描述

5.2 转义字符

  • 以反斜杠 \ 开头
  • 回到上一小节,也就是要高速解释器,what’s中的单引号,不要把它当成单引号,当做普通字符就可以了

再给几个例子如下:

a='窈窕淑女,\t君子好逑'
b='窈窕淑女,\n君子好逑'
c="c:\news"
d="c:\\news"
e=r"c:\news"
f=r'c:\news'
print(a)
print(b)
print(c)
print(d)
print(e)
print(f)

得到:

窈窕淑女,	君子好逑
窈窕淑女,
君子好逑
c:
ews
c:\news
c:\news
c:\news

我们一个个分析:

  • 第一个\t为制表符,tab键
  • 第二个\n为换行符
  • 第三个误把字符串中的一部分\n当成了换行符
  • 第四个再加入一个 \ 转义字符解决了该问题
  • 第五、六个给出了另一个解决办法,在一对单引号或一对双引号前加上r,r表示raw天然字符串,意思是引号里面什么符号都没有意义。

5.3 长字符串/文档字符串

  • 当我们在输入一行很长的字符串,想换行时,怎么办?
  • 办法一:使用 \n 转义字符
  • 办法二:使用三重引号

印证如下:
在这里插入图片描述
也就是说,三重引号中的内容类似于文档。

6 两个小作业

6.1 作业一

a,b=6,8,现在想让a=8,b=6,怎么办?两种方法。

办法一:

a=6
b=8
c=b
b=a
a=c
print(a,b)

得到:
在这里插入图片描述
办法二:

a=6
b=8
a=a+b
b=a-b
a=a-b
print(a,b)

结果为:
在这里插入图片描述

6.2 作业二

用print语句,两种方法打印出:hello,python

结果如图所示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Sheroisshero/article/details/106309878
今日推荐