Python_Learning

Python

Working

#!/netapp2/tools/share/apps/python3.6/bin/python3.6 #解释行

  1. import 导入模块
  2. reverse函数:将字符串从后向前依次翻转
  3. split('符号’):按照某种符号将字符串分割成列表
  4. findall(r ‘string’ , pattern):返回一个列表,列表中为从pattern找到的关键字sting出现的所有具体内容
  5. len():取某个列表的长度
  6. 字符串内插:
    • ‘string'+变量名
    • format函数

For example

'''strint+变量名'''
>> aa{ }bb{ }.format('string1','string2')
>> aastring1bbstring2
'''format 函数'''
>> a='string1'   b='string2'
>> aa{ }bb{ }.format(a ,b )=aastring1bbstring2

fomat 函数用法详解

  1. tkinter模块

tkinter.Tcl(screenName=None, baseName=None, className=‘Tk’, useTk=False)
Tcl() 函数是一个工厂函数,它创建的对象类似于 Tk 类创建的,只是不会初始化 Tk 子系统。这在调动 Tcl 解释器时最为有用,这时不想创建多余的顶层窗口,或者无法创建(比如不带 X 服务的 Unix/Linux 系统)。由 Tcl() 创建的对象可调用 loadtk() 方法创建一个顶层窗口(且会初始化 Tk 子系统)。

tcl=tkinter.Tcl() #在python中打开tcl解释器
tcl.eval("source"+self.tcl)#eval,命令执行tcl语法

Learning

一、python 数据类型

  1. 变量
    • 命名和使用
      • 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头。
        • 变量名不能包含空格,但可使用下划线来分隔其中的单词例如
        • 不要将Python关键字和函数名用作变量名
    • 字符串
      用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号
      ' I told my friend, "Python is my favorite language!" ' " The language 'Python' is named after Monty Python, not the snake. " " One of Python's strengths is its diverse and supportive community. "
      • title() #以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写 name = "ada lovelace" print(name.title())

要将字符串改为全部大写或全部小写:
name = “Ada Lovelace”
print(name.upper())
print(name.lower())

2、合并(拼接)字符串
Python使用加号(+ )来合并字符串。在这个示例中,我们使用+ 来合并first_name 、空格和last_name ,以得到完整的姓名:

first_name = "ada"
last_name = "lovelace"
❶ full_name = first_name + " " + last_name
print(full_name)

3、使用制表符或换行符来添加空白
空白 泛指任何非打印字符,如
空格、制表符和换行符**
01、添加制表符,可使用字符组合\t

 print("\tPython")
Python

02、添加换行符,可使用字符组合\n
03、同时包含制表符和换行符。字符串"\n\t" 让Python换到下一行

print("Languages:\n\tPython\n\tC\n\tJavaScript")
Languages:
Python
C
JavaScript

4、删除空白
Python能够发现’python ’ 中额外的空白,并认为它是有意义的。
Python能够找出字符串开头和末尾多余的空白。要确保字符串末尾没有空白,可使用方法rstrip()

favorite_language = 'python '>>> favorite_language
'python '>>> favorite_language.rstrip()
'python'>>> favorite_language
'python '

要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中:
favorite_language = 'python ’

>>> favorite_language = favorite_language.rstrip()
 favorite_language
'python'

或同时剔除字符串两端的空白。为此,可分别使用方法lstrip() 和strip()

>>> favorite_language = ' python '>>> favorite_language.rstrip()
' python'>>> favorite_language.lstrip()
'python '>>> favorite_language.strip()
'python'

5、数字
在Python中,可对整数执行加(+ )减(- )乘(* )除(/ )运算。
Python使用
两个乘号表示乘方
运算:
函数str() ,它让Python将非字符串值表示为字符串
Tips:
在Python 2中,整数除法的结果只包含整数部分,小数部分被删除。请注意,计算整数结果时,采取的方式不是四舍五入,而是将小数部分直
接删除。在Python 2中,若要避免这种情况,务必确保至少有一个操作数为浮点数,这样结果也将为浮点数:
6、注释
#

1.3 列表

01、 定义: 在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。
02、 元素访问: 列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。注意索引从0开始,通过设置索引值为负值,可以从后向前访问元素。
03、 修改元素值: 直接指代元素值为其他。
04、添加元素: append(string)方法直接在末尾添加元素string;insert(索引,‘string') 在任意位置插入元素。
05、删除元素del list[索引] 删除某个索引处的元素; pop(索引)方法从任意位置弹出列表中的元素,并可以继续使用,默认从末尾弹出;remove('string') 移除指定值的元素,且可以调用,注意remove不能将所有相同的值全部移除,需要使用循环。
06、列表排序: sort () 按字母顺序对列表排序(a~z),或者sort(reverse=True)倒序(z-a),为永久排序;sorted()临时排序,原列表的顺序不会发生变化;reverse()将数组顺序反转过来,永久性反转;
07、获取列表长度len()
08、列表切片:list[a:b] 拿出索引为从a~b-1的元素
09、复制列表: listb=lista[:] ;不能直接listb=lista,这样的话只是将两个不同的变量名指向了同一个列表。

1.4 字典

01、 定义: 字典 是一系列键—值对 。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。在Python中,字典用放在花括号{} 中的一系列键—值对表示。

alien_0 = {'color': 'green', 'points': 5}

键—值 对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键—值对之间用逗号分隔。
02、嵌套

1.5 元组

Python将不能修改的值称为不可变的 ,而不可变的列表被称为元组 。

元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。
元组中的元素不能直接修改,但是可以重新定义元组

二、python 逻辑控制结构

01、条件控制语句:
if else

if  条件测试表达式:
	print
else:
	print

常见条件测试表达式:
一个条件:== ,<=,>=,
多个条件:and /or
检查特定值是否包含在列表中:
’string’ in/not in list
布尔表达式:polling_active = True

if elif else

if 条件测试表达式:
	print
elif 条件测试表达式:
	print
else :
	print

02、循环控制语句:
while

while 条件测试表达式:
	print
	break  #跳出while循环
	continue  #跳出该层循环

for

for value in list: #冒号不要忘
      print #缩进部分为循环体的主题
      print
print    #与for相对的非缩进体为非循环部分  

三、python 常见的数据库(模块)和函数,类和方法

常见数据库

函数

def  函数名:
	函数主体
	rerurn #返回值

01、将函数储存在.py文件中(模块),可以直接使用import的方式调用。
.py

def make_pizza(size, *toppings):
"""概述要制作的比萨"""
print("\nMaking a " + str(size) +
"-inch pizza with the following toppings:")
for topping in toppings:
print("- " + topping)
import pizza 
pizza.make_pizza(16, 'pepperoni')
pizza.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

02、从模块中只调入某些函数: from mudule import function(*导入全部函数“慎用,会覆盖掉自己定义的函数”) 函数可以直接使用
03、使用as将命名为别为其他

01、创建类

class Dog():  #类
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age):# def开头为方法,self为必须形参,python根据类创建实例时,自动传递self形参,为了实例为指向类的引用,可以调用里面的方法和属性。
"""初始化属性name和age"""
self.name = name ##属性,可以在所有方法中使用
self.age = age   ##属性
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")

02、类的继承
一个类继承 另一个类时,它将自动获得另一个类的所有属性和方法;原有的
类称为父类 ,而新类称为子类 。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

class Car():  #父类必须在当前文件中且在子类的前面
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self, miles):
self.odometer_reading += miles
class ElectricCar(Car): ##定义子类必须在括号内指定父类的名称
"""电动汽车的独特之处"""
def __init__(self, make, model, year):
"""初始化父类的属性"""
super().__init__(make, model, year) #super() 是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用ElectricCar 的父类的方法__init__() ,让ElectricCar 实例包含父类的所有属性。父类也称为超类 (superclass),名称super因此而得名。
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())

03、实例用作属性

class Car():
--snip--
 class Battery():    #新的实例
"""一次模拟电动汽车电瓶的简单尝试"""
 def __init__(self, battery_size=70):
"""初始化电瓶的属性"""
self.battery_size = battery_size
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a " + str(self.battery_size) + "-kWh battery.")
class ElectricCar(Car):
"""电动汽车的独特之处"""
def __init__(self, make, model, year):
"""
初始化父类的属性,再初始化电动汽车特有的属性
"""
super().__init__(make, model, year)
 self.battery = Battery() #将battery实例储存在属性中可以调用
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()

四、python 文件处理和异常

01、文件读取

with open('pi_digits.txt') as file_object: #with打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。默认在当前工作目录下查找,可以指定绝对路径准确查找文件位置
contents = file_object.read() #read方法读取文件全部内容,比原文件多一个空行,
print(contents) #要删除多出来的空行,可在print 语句中使用.rstrip()方法
filename = 'pi_digits.txt'
with open(filename) as file_object:
	lines = file_object.readlines() #readlines将文件内容储存在列表中
for line in lines:
print(line.rstrip())

02、异常处理
当程序出现问题时,python会报错并停止程序的运行,当出现错误时,可以使用
try-except处理异常

try:
print(5/0)
except ZeroDivisionError:
print("You can't divide by zero!")
else:
	print(success)

我们将导致错误的代码行print(5/0) 放在了一个try 代码块中。如果try 代码块中的代码运行起来没有问题,Python将跳过except 代码块;如果try 代码块中的代码导致了错误,Python将查找这样的except 代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。

try:
--snip--
except FileNotFoundError:
	pass #出现错误什么都不做,继续执行下面的程序
else:
--snip--

03 、代码测试:
Python标准库中的模块unittest 提供了代码测试工具
函数测试

import unittest  #导入代码测试库
from name_function import get_formatted_name #导入要测试的函数
 class NamesTestCase(unittest.TestCase): #定义一个继承unittest.TestCase的类,用于执行测试。
"""测试name_function.py"""
 def test_first_last_name(self):    #自动执行以test开头的所有方法
"""能够正确地处理像Janis Joplin这样的姓名吗?"""
 formatted_name = get_formatted_name('janis', 'joplin')
 self.assertEqual(formatted_name, 'Janis Joplin') #断言,判断函数输出结果和预期是否相同
 unittest.main() #报告测试所用时间和结果

类测试

各种断言方法

方法用途
assertEqual(a, b)核实a == b
assertNotEqual(a, b)核实a != b
assertTrue(x)核实x 为True
assertFalse(x)核实x 为False
assertIn(item , list )核实 item 在 list 中
assertNotIn(item , list )核实 item 不在 list 中

使用setup()方法进行测试

import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
"""针对AnonymousSurvey类的测试"""
def setUp(self):
"""
创建一个调查对象和一组答案,供使用的测试方法使用"""
question = "What language did you first learn to speak?"
self.my_survey = AnonymousSurvey(question)
self.responses = ['English', 'Spanish', 'Mandarin']
def test_store_single_response(self):
"""测试单个答案会被妥善地存储"""
self.my_survey.store_response(self.responses[0])
self.assertIn(self.responses[0], self.my_survey.responses)
def test_store_three_responses(self):
"""测试三个答案会被妥善地存储"""
for response in self.responses:
self.my_survey.store_response(response)
for response in self.responses:
self.assertIn(response, self.my_survey.responses)
unittest.main()

04、正则表达式
re.match():

re.match(pattern, string, flags=0)
pattern匹配的正则表达式
string要匹配的字符串
flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
    |   re.I 忽略大小写
    |   re.L  表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
    |   re.M 多行模式
    |   re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
    |   re.U  表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
    |   re.X 为了增加可读性,忽略空格和 # 后面的注释

re.compile():

re.compile #compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
prog = re.compile(pattern)
result = prog.match(string)

等价于

result = re.match(pattern, string)

re.search() :re.search 扫描整个字符串并返回第一个成功的匹配,如果没有匹配,就返回一个 None。
refindall():在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。注意: match 和 search 是匹配一次 findall 匹配所有。
re.finditer():和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
re.sub():
sub是substitute的所写,表示替换,将匹配到的数据进⾏替换。

re.sub(pattern, repl, string, count=0, flags=0)
参数描述
pattern必选,表示正则中的模式字符串
repl必选,就是replacement,要替换的字符串,也可为一个函数
string必选,被替换的那个string字符串
count可选参数,count 是要替换的最大次数,必须是非负整数。如果省略这个参数或设为 0,所有的匹配都会被替换
flag可选参数,标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
#example1
a=re.sub('a','b','abcccc')
print(a)
'bbcccc'
#example2(分组匹配)
a=re.sub('a(?P<group1>[0-9]+)ccc','\g<group1>','a1224ccc')
print(a)
1224

tips:
re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配

re.subn: 行为与sub()相同,但是返回一个元组 (字符串, 替换次数)

re.split :根据匹配进⾏切割字符串,并返回⼀个列表。

re.split(pattern, string, maxsplit=0, flags=0)
参数描述
pattern匹配的正则表达式
string要匹配的字符串
maxsplit分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数

r的作⽤
与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符”\”,那么使用编程语言表示的正则表达式里将需要4个反斜杠”\\”:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问题,Python中字符串前⾯加上 r 表示原⽣字符串。

import re
mm = "c:\\a\\b\\c"
print(mm)#c:\a\b\c
ret = re.match("c:\\\\",mm).group()
print(ret)#c:\
ret = re.match("c:\\\\a",mm).group()
print(ret)#c:\a
ret = re.match(r"c:\\a",mm).group()
print(ret)#c:\a
ret = re.match(r"c:\a",mm).group()
print(ret)#AttributeError: 'NoneType' object has no attribute 'group'

五、python thinker 模块(GUI界面)

1.Treeview 组件
Treeview详解

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值