Python第二天 變量 運算符與表達式 input()與raw_input()區別 字符編碼 python轉義符 字符串格式化 format函數字符串格式化 幫助 pprint 關鍵字


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-strings)

在Python中存在兩種格式化字符串的方法,即%-formatting語句和str.format()函數。%表達式從Python 誕生之日就開始存在了,是基於C語言的printf 模型,目前還廣泛使用。
format函數是Python 2.6 和Python 3.0 新增加的技術,是Python獨有的方法,並且和%-formatting語句的功能有不少的重疊。雖然%表達式目前還廣泛使用
但是, format 函數才是字符串格式化的未來,%表達式在Python 未來的版本中可能會被棄

 

 

%表達式,%-formatting語句
%表示格式化字符串的格式符號。
%s方式格式化會有元組的問題,需要用.format方式才能解決,https://segmentfault.com/q/1010000000334606
%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 ='10'
sys.stdout.write("str:%s" %i)


字典
import sys
i ='10'
print "str:%(key)s" % {'key':i}


import sys
i =10
sys.stdout.write("str:%02f" %i)

 

 

 


format()函數
使用str.format()函數

格式控制
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))
"{:.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'
import math
print('The value of PI is approximately {}.'.format(math.pi))
print('The value of PI is approximately {!r}.'.format(math.pi))# 相當於 repr('哈哈')
print('The value of PI is approximately {!a}.'.format(math.pi))# 相當於 ascii('哈哈')
print('The value of PI is approximately {!s}.'.format(math.pi)) # 相當於 str('哈哈')
print('The value of PI is approximately {0:.3f}.'.format(math.pi))

 

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

(2)使用'{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)
#使用多次相同下標的參數
print 'port={1},{1}'.format('11','22') + '\n'

(3)使用關鍵字參數形式的占位符,使用名稱符號
print('Hi,{name},{message}'.format(name = 'Tom',message = 'How old are you?'))
print('#' * 40)

d=dict(good='a',bad='b')
print 'port={good}, haha is {bad}'.format(**d) + '\n'

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'))

#混合使用'{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)

 

 

注意:字符串里面不能花括號 包含  花括號,也就是花括號不能嵌套,否則會報錯,KeyError 

python字符串中的KeyError
'${  ss {}  }'.formate('nihao')

報錯
{}'''.format(HOST,PORT,USER,PASSWORD,timestampfile,timestampdoc,os.path.join(BACKDIR, now))
KeyError: ' $and'

 




 

f-strings

f-strings,亦稱為格式化字符串常量(formatted string literals),是 Python3.6 新引入的一種字符串格式化方法。
f-strings在形式上是以 f 或 F 修飾符引領的字符串(f'xxx' 或 F'xxx'),以大括號 {} 標明被替換的字段;
f-strings在本質上並不是字符串常量,而是一個在運行時運算求值的表達式。
https://www.cnblogs.com/jszfy/p/11148928.html

使用

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

name = "江辰"
age = 18
print(f"姓名:{name},年齡:{age}")
運行結果:
姓名:江辰,年齡:18

2、f-strings是在運行時進行渲染的,因此可以將任何有效的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']

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM