Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助

时间:2022-08-22 00:21:10

Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助  pprint 关键字

目录

Pycharm使用技巧(转载)

Python第一天  安装  shell  文件

Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化

Python第三天 序列  5种数据类型  数值  字符串  列表  元组  字典

Python第四天   流程控制   if else条件判断   for循环 while循环

Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数

Python第六天   类型转换

Python第七天   函数  函数参数   函数变量   函数返回值  多类型传值    冗余参数   函数递归调用   匿名函数   内置函数   列表表达式/列表重写

Python第八天  模块   包   全局变量和内置变量__name__    Python path

Python第九天  面向对象  类定义   类的属性    类的方法    内部类   垃圾回收机制   类的继承 装饰器

Python第十天   print >> f,和fd.write()的区别    stdout的buffer  标准输入 标准输出  标准错误   重定向 输出流和输入流

Python第十一天    异常处理  glob模块和shlex模块    打开外部程序和subprocess模块  subprocess类  Pipe管道  operator模块   sorted函数   生成器  walk模块   hashlib模块

Python第十二天     收集主机信息     正则表达式  无名分组   有名分组

Python第十三天   django 1.6   导入模板   定义数据模型   访问数据库   GET和POST方法    SimpleCMDB项目   urllib模块   urllib2模块  httplib模块  django和web服务器整合  wsgi模块   gunicorn模块

Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式

Python第十五天  datetime模块 time模块   thread模块  threading模块  Queue队列模块  multiprocessing模块  paramiko模块  fabric模块

Python变量

变量的命名
- 变量名由字母、数字、下划线组成。
- 变量不能以数字开头
- 不可以使用关键字
- a a1 _a
变量的赋值
- 是变量的声明和定义的过程,等号两边可以有空格,而bash等号两边不能有空格
a = 1
id(a)

变量不需要声明,根据所赋值内容决定变量的数据类型
aa是整型
>>> aa=3
>>> aa
3

非数字要用引号括起来,否则会认为是变量
abc = ccc 报错 NameError: name 'ccc' is not defined
ab = 'ddd' 正确
>>> ab = 'ddd'
>>> print ab
ddd


运算符与表达式
Python运算符包括

- 赋值运算符
我只说一句:Python 解释器所有的变量之间赋值都是采用的浅拷贝方案,浅拷贝就是把赋值运算符=右边的变量里面所指向值的内存地址直接赋值给左边的变量,函数默认参数里传引用和传值,对可变类型传引用,不可变类型传值
深拷贝是开辟新内存地址,来存储值,跟赋值运算符=右边的变量完全独立
=:x = 3, y = ‘abcd’
+=: x += 2
-=:x -= 2
*=:x *= 2
/=: x /= 2
%=:x %= 2

- 算术运算符
+
-
*
/   除法,有小数
//  整除,没有小数
%
**   乘方 2**3=8 表示2的3次方

- 关系运算符
> :1 > 2
< :2 < 3
>=:1 >= 1
<=:2 <= 2
==:2 == 2
!=: 1 != 2

- 逻辑运算符,用于布尔型True和False
and逻辑与: True and False
or逻辑或: False or True
not逻辑非: not True

- 位运算符
虽然平时很少用到位运算符
& 按位与运算(双目运算:当对应的两个二进制位都为 1 则结果为 1,否则结果为 0) b & a 结果为 3
❘ 按位或运算(双目运算:当对应的两个二进制位有一个为 1 则结果为 1,否则结果为 0) b ❘ a 结果为 7
^ 按位异或运算(双目运算:当对应的两个二进制位不同时 则结果为 1,否则结果为 0) b ^ a 结果为 4
~ 按位取反运算(单目运算:对数据的每个二进制取反,既把 1 变为 0, 把 0 变为 1) ~a 结果为 -8
<< 左移运算(单目运算:运算数据的各个二进制位全部左移, << 符号右边数字指定了移动的位数,高位丢弃,低位补 0 a << 3 结果为 28
>> 右移运算(单目运算:运算数据的各个二进制位全部右移, >> 符号右边数字指定了移动的位数,低位丢弃,高位补 0

成员运算符
in     如果 val 的值在 strone 中存在返回 True,否则返回 False
not in     如果 val 的值在 strone 中不存在返回 True,否则返回 False

身份运算符
身份运算符判断的是两个变量指向的对象的内存地址是否相同,Python 语言用 id 函数来获取变量指向的对象内存地址
is 判断两个标识符是不是引用同一个对象
is not 判断两个标识符是不是引用不同对象

三目运算符
在 python 语言中三目运算符的表示方式是:为真时的结果 if 判定条件 else 为假时的结果。
score = 59
print("ok" if score >= 60 else "no")

表达式是将不同的数据(包括变量、函数)用运算符号按一定规则连接起来的一种式子。

数字类型小于任何其他非数字类型,所以也小于字符串类型。
字符串之间的比较,从左到右,先比较第一个字符,如果第一个字符一样,再比较第二字符,依次进行比较
那么字符之间比较的原则是根据ACSII,'a'的ASCII值是97,ord('a')是97,ord('A')是65,所以’a' > 'A'。
那么’4‘与’35'哪个大?


input()与raw_input()区别

input()与raw_input()返回值都是字符串

input() 输入的内容不能是字符,否则会当成变量
raw_input()   输入的内容不受限制,不会自动加raw strings,不会在字符串前加r,不要误会了

#!/usr/bin/python
#encoding:utf8
num1 = input("请输入数字: ")
num2 = input("Please input a number: ")

print "%s + %s = %s" % (num1, num2, num1+num2)
print "%s - %s = %s" % (num1, num2, num1-num2)
print "%s * %s = %s" % (num1, num2, num1*num2)
print "%s / %s = %s" % (num1, num2, num1/num2)
print "%s " % num1

print "%.2f" % (int(free)/1024.0)+'M'

 

字符串格式化(%-formatting语句、str.format()函数、f-string)

在Python中存在两种格式化字符串的方法,即%-formatting语句和str.format()函数。%表达式从Python 诞生之日就开始存在了,是基于C语言的printf 模型,目前还广泛使用。
format函数是Python 2.6 和Python 3.0 新增加的技术,是Python独有的方法,并且和%-formatting语句的功能有不少的重叠。虽然%表达式目前还广泛使用
但是, format 函数才是字符串格式化的未来,%表达式在Python 未来的版本中可能会被弃

%表达式,%-formatting语句
%表示格式化字符串的格式符号。
%s,格式化字符串,字符,如果只有一个字符,通常不用括号,格式化之后变为字符串
%d,表示整数的字符串,格式化字符串,数字,如果只有一个字符,通常不用括号,格式化之后变为字符串
%x,表示16进制的字符串
%f,表示浮点数字符串,%.2f ,.2表示显示几位小数,如果只有一个字符,通常不用括号,格式化之后变为字符串,所以可以用+号连接'M'
%r,表示用rper()方法处理对象,打印时能够重现它所代表的对象(rper() unambiguously recreate the object it represents),https://www.jb51.net/article/108589.htm

示例
import sys
i =10
sys.stdout.write("str:%d" %i) import sys
i =''
sys.stdout.write("str:%s" %i) 字典
import sys
i =''
print "str:%(key)s" % {'key':i} import sys
i =10
sys.stdout.write("str:%02f" %i)

format()函数
使用str.format()函数
print ('6:\t|{0:b}'.format(3))
print ('7:\t|{0:c}'.format(3))
print ('8:\t|{0:d}'.format(3))
print ('9:\t|{0:o}'.format(3))
print ('10:\t|{0:x}'.format(3))
print ('11:\t|{0:e}'.format(3.75))
print ('12:\t|{0:g}'.format(3.75))
print ('13:\t|{0:n}'.format(3.75))#浮点数
print ('14:\t|{0:n}'.format(3))  #整数
print ('15:\t|{0:%}'.format(3.75))

Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助

#属性赋值,比较少用

class Customer(object):
def __init__(self,name):
self.name=name
def __str__(self):
return 'name : {self.name}'.format(self=self) if __name__=='__main__':
print str(Customer('aa'))

#使用'{}'占位符
print('I\'m {},{}'.format('Hongten','Welcome to my space!'))
print('#' * 40)

#也可以使用'{0}','{1}'形式的占位符,位置符号
print('{0},I\'m {1},my E-mail is {2}'.format('Hello','Hongten','hongtenzone@foxmail.com'))
#可以改变占位符的位置
print('{1},I\'m {0},my E-mail is {2}'.format('Hongten','Hello','hongtenzone@foxmail.com'))
print('#' * 40)

#使用'{name}'形式的占位符,使用名称符号
print('Hi,{name},{message}'.format(name = 'Tom',message = 'How old are you?'))
print('#' * 40)

#混合使用'{0}','{name}'形式
print('{0},I\'m {1},{message}'.format('Hello','Hongten',message = 'This is a test message!'))
print('#' * 40)

格式化元组

 point = (1,2)
print '{0[0]};{0[1]}'.format(point)

Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助

#下面进行格式控制
import math
print('The value of PI is approximately {}.'.format(math.pi))
print('The value of PI is approximately {!r}.'.format(math.pi))
print('The value of PI is approximately {0:.3f}.'.format(math.pi))

注意:字符串里面不能花括号 包含  花括号,也就是花括号不能嵌套,否则会报错,KeyError

python字符串中的KeyError
'${ ss {} }'.formate('nihao') 报错
{}'''.format(HOST,PORT,USER,PASSWORD,timestampfile,timestampdoc,os.path.join(BACKDIR, now))
KeyError: ' $and'

Python 会自动将format 函数的参数依次传递给{}占位符
print 'port={}'.format('11') + '\n'

通过下标访问参数以后, 一个参数可以出现多次
print 'port={1},{1}'.format('11','22') + '\n'

在参数较少的情况下,通过占位符或下标的形式访问format 函数的参数并没有什么问
题。如果参数较多就不太适合了,这个时候,可以使用解释性更强的关键字参数形式
d=dict(good='a',bad='b')
print 'port={good}, haha is {bad}'.format(**d) + '\n'

format函数精度,符号,宽度,对齐方式,字符填充,逗号分隔进行测试
"{:.2f }".format(3.1415926)
'3.14'
"{:+.2f}".format(3.1415926)
'+3.14'
"{:10.2f}".format(3.1415926)
'3.14'
"{:^l0.2f}".format(3.1415926)
' 3.14  '
"{:,}".format(1234567)
'1,234,567'

注意:%s方式格式化会有元组的问题,需要用.format方式才能解决

https://segmentfault.com/q/1010000000334606

a='port=%s' + '\n' %(mongoport,)
TypeError: not all arguments converted during string formatting

print ('port=%d' + '\n') % (mongoport)
TypeError: %d format: a number is required, not str

f-string

f-string,亦称为格式化字符串常量(formatted string literals),是 Python3.6 新引入的一种字符串格式化方法。
f-string在形式上是以 f 或 F 修饰符引领的字符串(f'xxx' 或 F'xxx'),以大括号 {} 标明被替换的字段;
f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
https://www.cnblogs.com/jszfy/p/11148928.html

使用

1、f-string解析变量,f-string可以解析任意类型的变量,跟str.format()类似,但是使用起来更便捷

name = "江辰"
age = 18
print(f"姓名:{name},年龄:{age}")
运行结果:
姓名:江辰,年龄:18

2、f-string是在运行时进行渲染的,因此可以将任何有效的Python表达式放入其中,这里的python表达式自然也包括函数

a = "f-"
b = "string"
print(f"{80*10},{{80*10}},{a + b}") 运行结果:
800,{80*10},f-string def mult_two_num(a):
print("计算两数之和")
print(10+a) f"{mult_two_num(9)}" 运行结果: 计算两数之和
19

python字符串中的转义

python里面有两种转义符

1、字符串格式化里面的转义符,对于用format函数格式化无用

2、正则表达式里面的转义符

1、%,两个特殊符号前面加%转义(字符串格式化里面的转义符),对于用format函数格式化无用,不需要记,垃圾

"str:%d%%" %i :百分之多少  %d  %  比如100%
sys.stdout.write("str:%d%%" %i)
abc='growth rate: %d %%' %7
print(abc)

f

原样输出%,对于用format函数格式化无用,不需要记,垃圾

%转义,原样输出%
sql = "grant replication slave on *.* to %s@'%%' identified by '%s'" %'xiaolin'

2、\ 转义符  (正则表达式里面的转义符)

转义符和元字符跟shell的跟mysql的基本一样,转义都有\ 反斜杠

http://www.cnblogs.com/MYSQLZOUQI/p/5189884.html

我们想让通配符,或者元字符变成普通字符。那么这里我们就需要用到转义符了。 shell提供转义符有四种。

'' 单引号,硬转义,其内部所有的shell元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。
"" 双引号,软转义,其内部只允许出现特定的shell元字符($,`,\):$用于变量值替换、`用于命令替换、\用于转义单个字符
\ 反斜杠,转义,去除其后紧跟的元字符或通配符的特殊意义

如果字符串里需要用到单引号,那么字符串外面就需要双引号,如果外面也用单引号就会报错

"change master to master_host='%s',master_port" %(abc)

字符串的值本身包含单引号的情况,我们使用双引号来定义字符串
字符串的值本身包含双引号的情况,我们使用单引号来定义字符串

intro = "He's a teacher"
statement = 'John said to me: "Can you do me a favour "'

字符串的值本身既包含双引号又包含单引号,那么我们使用转义字符\来处理

intro = 'He\'s a teacher'
statement = "John said to me: \"Can you do me a favour \""

加上原始字符

intro = r"He's a \ teacher"

使用三个引号来定义字符串

""" type " license " for more information. Details about 'ob ', use ' object? for extra details . """

使用三个引号定义的字符串一般称为多行字符串
多行字符串起止都是三个单引号或三个双引号,在三重引号之间,所有的引号,都会被认为是普通的字符, 是字符串的一部分

要分清楚python元字符、python特殊字符(部分ASCII控制字符)、python普通字符、python普通字符里单引号、python运算符
运算符:例如运算符,如 + 、 - 、 * 、 ** 、 / 、 % 、 < 、 >
python普通字符,无任何特殊意义,在正则模块re里或普通字符串里都无特殊意思
python元字符,只有在正则模块re里有用,如果不是在正则模块re里则原样输出,而且在re模块里要加r或R来原样输出raw strings:.、^、$、*、+、?、{}、[]、\ 转义、|、()、\d、\D、\s、\S、\w、\W
python特殊字符(部分ASCII控制字符),下面是特殊字符,需要使用r或R来原样输出raw strings原生字符,或text.encode(encoding='xxx')一般在mssql备份Windows路径的sql里无法在字符串前加r或R只能用这种方式或在特殊字符前加\ 转义符,例如ho\\rn.orgp222r

def to_rawstrings(text):
'''
# convert a text string to raw strings
:param text:
:return:
'''
import six
s = ''
if six.PY2:
if isinstance(text, str):
s = text.encode(encoding='string-escape')
elif isinstance(text, unicode):
s = text.encode(encoding='unicode-escape')
elif six.PY3:
if isinstance(text, str):
s = text.encode(encoding='unicode-escape')
return s

python特殊字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000 空
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数yy代表的字符,例如:\o12代表换行
\xyy 十进制数yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

注意:

在python普通字符里保留单引号,方法是单引号前加\ 转义符使用r或R来原样输出raw strings,三个引号 包住字符串

在字符串里包含\\ 反斜杠符号和\ 转义的典型例子是Windows的路径,所以Windows的路径要用终极方法:raw strings+三个引号

要转义,终极方法是:raw strings(r或R)+三个引号

https://www.journaldev.com/23598/python-raw-string
Raw String 和引号
raw string字符串里,最后一个引号(单引号/双引号/三引号)前面不能有反斜杠,否则会被认为是转义,然后出错
if os.path.isdir(r'E:\安装文件\pycharm\'): 会报错
目录:r'E:\安装文件\pycharm'
文件:r'E:\安装文件\pycharm\abc.txt'


#encoding:utf8:指定字符编码支持中文
有几种写法
#encoding:utf8
#encoding:utf-8
#-*- encoding:utf-8 -*-
#coding:utf8
#coding:utf-8
#-*- coding:utf-8 -*-


帮助

dir()函数:看一下对象的属性,有哪些函数
help()函数
type()函数
ctrl+鼠标左键看源码,比如os.path,点进去会到__builtin__.py,不需要help函数这麽麻烦

type函数
查看变量的数据类型
type(变量名)

help函数
查看帮助
help(名称)


pprint

print()和pprint()都是python的打印模块,功能基本一样,唯一的区别就是pprint()模块打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。
特别是对于特别长的数据打印,print()输出结果都在一行,不方便查看,而pprint()采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,适合采用pprint()打印方式

import pprint

data = ('test', [1, 2, 3, 'test', 4, 5], 'This is a string!','This ishhhhhhhhh!', {'age': 23, 'gender': 'F'},[1,2,3])
print(data)
print('*' * 30)
pprint.pprint(data)
pprint.pprint([1,2,3])

python的关键字,python3.7
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']

Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助的更多相关文章

  1. 用户名密码登录小程序及input与raw&lowbar;input区别。

    一.此次程序需要实现: 1.设定固定的用户名密码 2.用户名密码输入正确打印登录正确信息 3.仅仅运行三次登录 二.本次使用的python版本为: Windows下版本号: C:\Users\dais ...

  2. python大法好——变量、常量、input()、数据类型、字符串、格式化输出、运算符、流程控制语句、进制、字符编码

    python基础知识 1.变量 变量:把程序运算的中间结果临时存到内存里,以备后面的代码可以继续调用. 作用:A.存储数据. B.标记数据. 变量的声明规则: A:变量名只能是字母,数字或下划线任意组 ...

  3. Python第二章-变量和数据类型

    变量和数据类型 一.什么是变量,常量 思考:程序执行指的是什么? 对数据进行存储处理和计算,最终获得结果,这是程序执行的本质. 变量的概念和在数学中的变量的概念一样的,只是在计算机程序中,变量不仅可以 ...

  4. input、raw&lowbar;input区别,运算符,运算优先级,多变赋值方式

    目录 1. Python2中的input.raw_input赋值方式和Python3中的input赋值方式的差别 2. 运算符 3. python运算符优先级 4. 格式化输出 5. 链式赋值 6. ...

  5. 字符编码——python学习

    python学习—字符编码 例如汉字“中” 十进制:20013 二进制:01001110 00101101(unicode)/11100100 10111000 10101101(utf-8) 十六进 ...

  6. Python学习笔记 (2&period;2)Python中的字符编码问题及标准数据类型之String(字符串)

    Python3中的String类型 首先,Python中没有字符类型,只有字符串类型.单个字符按照长度为1的字符串处理,这对于曾是OIER的我来说有点不适应啊. 字符串的表示方法 最常用的就是用一对双 ...

  7. python中的printf:&percnt;号拼接字符串和format函数

    在C语言中,我们使用printf("%s","hello")这种形式进行字符串的拼接 在python中,进行这样的拼接有两种实现方式,分别是%号拼接以及使用fo ...

  8. java第二课:运算符和表达式

    1.取模%,如果余数为零,则判断可以整除.2.余数永远小于除数.3.自增运算符++或自减运算符--单独使用时,前++.--后++.--效果是一样的4.先加一,后使用,前++:先使用,后加一,后++5. ...

  9. Python第十天 print &gt&semi;&gt&semi; f&comma;和fd&period;write&lpar;&rpar;的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys&period;exit&lpar;&rpar;调用 optparse argparse

    Python第十天   print >> f,和fd.write()的区别    stdout的buffer  标准输入 标准输出  从控制台重定向到文件  标准错误   重定向 输出流和 ...

随机推荐

  1. leetcode&lowbar;222 Count Complete Tree Nodes

    题目: Given a complete binary tree, count the number of nodes. Definition of a complete binary tree fr ...

  2. 实现LoadRunner多个场景的顺序执行(命令行)

    应用场景:假设有3个不同的测试场景,分别为并发登录.核心业务.可靠性测试,3个场景有先后执行顺序.由于白天测试机器另有用处,只能在晚上进行性能测试,这时我们的期望是能否把测试场景都设定好之后晚上自动运 ...

  3. mysql笔记01 MySQL架构与历史、Schema与数据类型优化

    MySQL架构与历史 1. MySQL架构推荐参考:http://www.cnblogs.com/baochuan/archive/2012/03/15/2397536.html 2. MySQL会解 ...

  4. makefile--目录搜索(八)

    在一个较大的工程中,一般会将源代码和二进制文件(.o 文件和可执行文件)安排在不同的目录来进行区分管理.这种情况下,我们可以使用 make 提供的目录搜索依赖文件功能(在指定的若干个目录下自动搜索依赖 ...

  5. quartz 的学习和使用。

    任务调度器, 定时任务,保存好后会被放入触发器,这些触发器被存入到数据库,调度器线程扫描,如果有待触发的打开锁,拿到job信息,更改trigger信息,释放锁,返回所有的trigger列表,再 按照时 ...

  6. stringstream转换CString为string出错

    使用stringstream转换CString为string时,调试时发现是CString赋给stringstream没有问题,stringstram赋给string就不行,倒也不是没有赋成功,只是赋 ...

  7. Salesforce开发入门

    云计算风起云涌,已成势不可挡之势.公司好多项目都依托于云平台了,网络安全采用了zscaler,人力资源系统用的workday,我们case系统也用了salesforce,我自己也在用运行于Google ...

  8. sh 脚本执行sql文件传参数

    一.前言 今天做数据删除,用的命令行输入参数,并且调用执行的sql文件,我采用了sed命令,进行替换. sh脚本如下 #! /bin/sh echo "Please enter the ba ...

  9. 常见手机的设备分辨率、viewport和devicePixelRatio

    常见手机的设备分辨率和viewport分辨率,及其1rem的大小(以vmin为单位) 常见的devicePixelRatio是1, 1.325, 1.5, 2, 2.4, 3.  (具体见下面的表格, ...

  10. SimpleCursorAdapter和ListView的结合使用

    我们在用SQLite查数据的时候,经常会用到Cursor这个游标,我们希望能将游标指向的数据直接绑定到ListView中,这样就免去了将游标数据取出然后转换到SimpleAdapter中的麻烦.今天我 ...