第二章 python 变量和简单类型

单词

Help 帮助
Function 函数
Built-in(builtins)内置
Module 模块
Value 值
Stream 流
Default 默认
Format 格式化
digit 数字 %d
Required 必须 需要

一、变量

1. print函数

语法格式:
print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)

spe参数:分隔符
代码如下:

# 同时输出多个变量和字符串,指定分隔符
user_name = 'Charlie'
user_age = 8
print("读者名:", user_name, "年龄:", user_age, sep=' | ')

>> 读者名:|Charlie|年龄:|8

end参数:默认换行
转义字符:\n 换行 \t 制表符 \r 回车

# 设置end参数,指定输出之后不再换行
print(40, '\t', end="")
print(50, '\t', end="")
print(60, '\t', end="")

>>40 50 60

file参数:指定输出目标,默认到屏幕

f = open("poem.txt", "w") # 打开文件以便写入
print('沧海月明珠有泪'file=f)
print('蓝田日暖玉生烟'file=f)
f.close()

flush参数:控制输出缓存


2. 变量的命名规则

在使用标识符时,需要注意如下规则:
>标识符可以由字母、数字、下画线(_)组成,其中数字不能打头.
>标识符不能是Python关键字,但可以包含关键字.
>标识符不能包含空格.

3. 关键字和内置函数

关键字和内置函数不能作为标识符

(1)关键字

查看有哪些关键字:
import keyword
print(keyword.kwlist)

关键字关键字关键字关键字关键字
FalseNoneTrueandas
assertbreakclasscontinuedef
delelifelseexceptfinally
forfromglobalifimport
inislambdanonlocalnot
orpassraisereturntry
whilewithyield--
1-1 as
  1. with…as…
  2. 导入模块起别名
  3. except结合使用
    参考链接:https://blog.youkuaiyun.com/weixin_44306005/article/details/93975548

1-2 assert

条件为false时执,等价于 if not


1-3 finally

异常处理:try…finally 无论是否异常都执行finally


1-4 global

定义函数时,在函数内部对函数外的变量进行操作
链接:https://blog.youkuaiyun.com/weixin_40894921/article/details/88528159


1-5 lambda

创建匿名函数
语法:
lambda [arg1 [,arg2,…argn]]:expression

代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
 
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )

>>相加后的值为 :  30
>>相加后的值为 :  40

lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。


1-6 nonlocal

在函数或其他作用域中使用外层(非全局)变量
链接:https://blog.youkuaiyun.com/Candance_star/article/details/91991225


1-7 yield

带有 yield 的函数在 Python 中被称之为 generator(生成器)

举例:如何生成斐波那契数列
链接:https://www.runoob.com/w3cnote/python-yield-used-analysis.html

一个带有 yield 的函数就是一个 generator,它和普通函数不同,生成一个 generator 看起来像函数调用,但不会执行任何函数代码,直到对其调用 next()(在 for 循环中会自动调用 next())才开始执行。虽然执行流程仍按函数的流程执行,但每执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。

yield 的好处是显而易见的,把一个函数改写为一个 generator 就获得了迭代能力,比起用类的实例保存状态来计算下一个 next() 的值,不仅代码简洁,而且执行流程异常清晰。

(2)内置函数

内置函数内置函数内置函数内置函数内置函数
abs()all()any()basestring()bin()
bool()batearray()callable()chr()classmethod()
cmp()compile()complex()delattr()dict()
dir()divmod()enumerate()eval()execfile()
file()filter()float()format()frozenset()
getattr()globals()hasattr()hash()help()
hex()id()input()int()isinstance()
issubclass()iter()len()list()locals()
long()map()max()memoryview()min()
next()object()oct()open()ord()
pow()print()property()range()raw_input()
reduce()reload()repr()reversed()zip()
round()set()setattr() **slice()**sorted()
staticmethod()str()sum()super()tuple()
type()unichr()unicode()vars()xrange()
Zip()__ import__()apply()buffer()coerce()
intern----

chr()

chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。


dir()

列出指定类或模块包含的全部内容(包含函数、方法、类、变量)
dir(str)


format()

字符串格式化输出
方式:1.使用占位符 %s %d %f 2.format函数
format是一个字符串中的函数 ‘’.format()

age=2
s='已经上'
nessage = '乔治说:我今年{}岁了,{}幼儿园!'.format(age,s)
print(message)

isinstance()

用于判断某个变量是否为指定类型的实例,其中前一个参数是要判断的变量,后一个参数是类型。

代码如下:

ele = 23
if isintance(ele, int) or isintance(ele, float):
	print(ele)

>> 23

raw_input()

python 2.x


repr()
  1. 将数值转换为字符串
  2. 以python表达式的形式来表示值(双引号变成单引号)

代码如下:

st = " I will very happy!"
print(st)
print(repr(st))

>> I will very happy!
>> ' I will very happy!'

reversed()

该函数可接收各种序列(元组、列表、区间等)参数,然后返回一个“反序排列”的迭代器,该函数对参数本身不会产生任何影响。

代码如下:

a = range (10)
b = [x for x in reversed (a)]
print(b)

>> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

.

二、字符串

1. 长字符串(\)

转义字符(\)对换行符进行转义

代码如下:

s2 = 'The quick brown fox \
jumps over the lazy dog'
print(s2)

2. 原始字符串(r开头)

r’C:\user\pthon3.8\xcx’

原始字符串中有引号,需要对引号进行转义

代码如下:

# 原始字符串包含的引号,同样需要转义
s2 = r'"Let\'s go", said Charlie'
print(s2)

>> "Let\'s go", said Charlie


# 原始字符串结尾处包含反斜线
s3 = r'Good Morning' '\\'
print(s3)

>> Good Morning\

3. 转义字符(\n)

支持的转义字符:

转义字符说明
\b退格符
\n换行符
\r回车符
\t制表符
"双引号
单引号
\反斜线

代码如下:

s2 ='商品名\t\t单价\t\t数*\t\t总价,
s3 ='疯狂Java讲义\tl08\t\t2\t\t216,
print(s2)
print(s3)

>>商品名			单价		数量		总价
>>疯狂Java讲义	108		2		216

4. 字符串格式化(%)

代码如下:

user = "Charli"
age = 8
# 格式化字符串中有两个占位符,第三部分也应该提供两个变量
pzint("%« is a %s y«ars old boy" % (user , age))

转换说明符:

转换说明符说明
d,i转换为带符号的十进制形式的整数
o转换为带符号的八进制形式的整数
x转换为带符号的十六进制形式的整数
X转换为带符号的十六进制形式的整数
e转换为科学计数法表示的浮点数(e小写)
E转换为科学计数法表示的浮点数(E小写)
f,F转换为十进制形式的浮点数
g智能选择使用f或e格式
G智能选择使用F或E格式
C转换为单字符(只接受整数或单字符字符串)
r使用repr()将变量或表达式转换为字符串
s使用repr()将变量或表达式转换为字符串

代码如下:

num = -28
print("num is: %6i" % num)
print("num is: %6d" % num)
print("num is: %6o" % num)
print("num is: %6x" % num)
print("num is: %6X" % num)
print("num is: %6s" % num)

>>num is:   -28
>>num is:   -28
>>num is:   -34
>>num is:   -1c
>>num is:   -1c
>>num is:   -28

备注:
从上面的输出结果可以看岀,此时指定了字符串的最小宽度为6,因此程序转换数值时总宽度为6,程序自动在数值前面补充了三个空格。

在默认情况下,转换出来的字符串总是右对齐的,不够宽度时左边补充空格。Python也允许在最小宽度之前添加一个标志来改变这种行为,Python支持如下标志。

-:指定左对齐。
+:表示数值总要带着符号(正数带"+”,负数带“-”)。
0:表示不补充空格,而是补充0。

这三个标志可以同时存在。

代码如下:

# 最小宽度为0,左边补0
print(nnum2 is: %06dM % num2)
# 最小宽度为6,左边补0,总带上符号
print (*'num2 is: %+06dM % num2)
# 最小宽度为6,左对齐
print(Hnum2 is: %-6dM % num2)

>>num2 is: 000030
>>num2 is: +00030
>>num2 is: 30

浮点数的小数点数,字符串的个数

代码如下:

my_value = 3.001415926535
# 最小宽度为8,小数点后保留3位
print (Mmy__value is: %8.3f ** % my_value)
# 最小宽度为8,小数点后保留3位,左近补0
print (*'my__value is: %08.3f" % my__value)
# 最小宽度为8,小数点后保留3位,左边补0,始终带符号
print (Mmy_value is: %+08.3ff, % my__value)
the__name = nCharlieH
# 貝裸留3个字符
print(Hthe name is: %.3sn % the_name) # 输出 Ch&
# 只保留2个字符,最小宽度为10	一
printthe name is: %10.2sn % the name)

my_value is:   3.001
my_value is:0003.001
my_value is:+003.001
the name is:Cha
the name is:        Ch

5. 序列相关方法(s[2])

代码如下:

s = 'crazyit.org is very good'
# 获取s中索引2的字符
print (s[2]) # 输出 a

6. 大小写相关方法(str类)

dir():列出指定类或模块包含的全部内容(包括函数、方法、类、变量等)。
help():査看某个函数或方法的帮助文档。

# 查看str类中包含的全部内容
dir(str)

title():将每个单词的首字母改为大写.
lower():将整个字符串改为小写。
upper():将整个字符串改为大写。
capwords():将每个单次的首字母变成大写

7. 删除空白(str类)

strip():删除字符串前后的空白。
Istrip():删除字符串前面(左边)的空白。
rstrip():删除字符串后面(右边)的空白。

8. 查找、替换相关方法(str类)

startswith():判断字符串是否以指定子串开头。
endswith():判断字符串是否以指定子串结尾。
find():査找指定子串在字符串中出现的位置,如果没有找到指定子串,则返回-1。
index():査找指定子串在字符串中出现的位置,如果没有找到指定子串,则引发ValueError错误。
replace():使用指定子串替换字符串中的目标子串。
translate():使用指定的翻译映射表对字符串执行替换。

# 将字符串中的所有it替换成xxxx
print(s・ replace('it', 'xxxx'))
# 将字符串中1个让替换成xxxx
print(s.replace('it', 'xxxx', 1))

9. 分割、连接方法(str类)

split():将字符串按指定分割符分割成多个短语。
join():将多个短语连接成字符串。

s = 'crazyit.org is a good site'
# 使用空白对字符串进行分割
print (s. split ()) # 输出['crazyit.org', 'is', 'good', 'site']
# 使用空白对字符串进行分割,最多只分割前两个单词
print (s.split (None, 2)) # 输出['crazyit.org', 'is', 'a good site' ]
# 使用点进行分割
print (s.split ('.')) # 输出['crazyit', 'org is a good site* ]
mylist = s.split ()
# 使用'/'作为分割符,将mylist连接成字符串
print (' / * .join (mylist)) # 输出 crazyit. org/is/a/good/site
# 使用作为分割符,将mylist连接成字符串
print (• r ' .join (mylist)) # 输出 ceazYit.oirg,:bs,a,good, site

三、运算符

1. 赋值运算符(=)

2. 算数运算符(+ - * / // % **)

+:加法运算符
-:减法运算符
*:乘法运算符
/ :除法运算符
//:整除运算符
%:求余运算符
**:乘方运算符

3. 位运算符(& | ^ ~ << >>)

&:按位与
I:按位或
^:按位异或
~:按位取反
«:左位移运算符
»:右位移运算符

第一个操作数第二个操作数按位与按位或按位异或
00000
01011
10011
11110

代码如下:

# 将输出1
print(5 & 9)
# 将输出13
print(5 | 9)

a = -5
# 将输出4
print(~a) # 取反 
# 将输出12
print(5 ^ 9) # 异或

5 & 9运算过程

  00000101
& 00001001
——————————
  00000001

-5取反运算过程

-5的原码:10000000000000000000000000000101
原码除符号位外取反得到反码
-5的反码:11111111111111111111111111111010
负数在计算机里以补码存在,这就是-5;反码加1得到补码
-5的补码:11111111111111111111111111111011
正数的补码和原码相同,下面就是4;取反后最高位(符号位为0),成为正数
-5的取反:00000000000000000000000000000100

4. 索引运算符(a[2:8:2])

5. 比较运算符(bool类型)

6. 逻辑运算符(and or not)

7. 三目运算符(if)

语法格式:
True_statement if expression else False_statement

代码如下:

a = 5
b = 3
st = "a 大于 b" if a > b else 'a 不大于 b'
# 输出"a大于b”
print(st)

8. 运算符的优先级

运算符说明Python运算符优先级
索引运算符x[index] 或 x[index:index2[:index3]]18、19
属性访问x.attribute17
乘方**16
按位取反~15
符号运算符+或-14
乘、除*、/、//、%13
加、减+、-12
位移>>、<<11
按位与&10
按位异或^9
按位或l8
比较运算符==、!=、>、>=、<、<=7
is运算符is、is not6
in运算符in、not in5
逻辑非not4
逻辑与and3
逻辑或or2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值