学习Python之旅

**

Python

**
1.变量-目标类型及范围
(1)可在程序中使用的变量存储信息,如保存用户输入,程序的本地状态等。
(2)Python中变量以名字命名。
Python中变量类型包括数字,字符串,集合,列表,元祖和字典,这些都是标准的数据类型。
声明并给变量赋值
如下所示:这里首先分别给变量MyFirstVariable分配整形数值1,字符串‘Hello.You’,由于Python中的数据类型是动态的,因此这种重复赋值操作是可以实现的 。

MyFirstVariable = 1
MyFirstVariable = 2
MyFirstVariable = ‘Hello.You’

Python中变量赋值操作又称为绑定
数值型
Python支持整型,小数,浮点型数据。

value = 1 #integer
value = 1.2 #float with a floating point

此外,也能支持长整型,以L为后缀表示,如999999999999L。
字符串
字符串就是字母的序列表示文本信息。
字符串的值用括号括起来。

name = ‘farhad’

字符串是不可改变的,一旦创建,就不能呗修改。

a = ‘me’
a[1] = 'y'

It will throw a Type Error

当字符串变量被赋予一个新值时,Python将创建一个新的目标来存储这个变量值。
2.局部变量和全局变量
局部变量
在一个函数内声明一个变量,则变量只存在于该函数中。
局部变量在外部是不能被访问的。
Python中if-else和for、while循环是不能穿件局部变量
全局变量
全局变量是可以通过任意一个全局函数访问,他们存在__main__框架中。
此外,在函数之外你也可以声明一个全局变量,值的注意的是,当需要一个全局变量分配新值时,必须使用‘global’关键字。

Testm = True
def sf():
    global Testm
    Testm = False

sf()
print(Testm)
.
False

当移除“global Testm”只能在sf()函数中将变量设置为False,如果你想在多个模块间共享一个全局变量,那么你需要创建一个共享模块文件。如 configuration.py,并在文件中招待你所需的变量,最后导入共享模块。
查看变量类型
通过tyoe()函数来查看变量类型。

print(type('adf'))

<class 'str'>

整型变量中的逗号
逗号可视为变量序列。

9,8,7  is three numeric variables

3.操作
数值操作
加,减,乘,除,幂,取余

1//3
0
1/3
0.333
2**3=2*2*2=8
7%2=1

4.字符串操作

print('a'+'b')   #字符串拼接
print('a'*3)     #字符串复制
#字符串切片
y = 'Abc'
print(y[:2])
print(y[1:])
print(y[:-2])
print(y[-2:])
#字符串反序
x = 'abc'
x = x[::-1]
print(x)

如果你想得到字符串的最后一个字符,那需要使用负索引值。

a = 'adf'
print(a[-1])

f

查看索引值

name = 'farhad'
index = name.find('r')
print(index)
2

name = 'farhad'
index = name.find('a',2)
print(index)
4

正则表达式
split():通过正则表达式将一个字符串分割得到一个列表。
sub():通过正则表达式取代所要匹配的字符。
subn():通过正则表达式取低所要匹配的字符并返回所替代字符的个数。
Casting
str(x):将变量x转为字符串类型
int(x):将变量x转为整型
float(x):将变量x转为浮点型
集合操作
集合是一种无序的数据集合,定义一个集合变量。

a = {1,2,3}

集合交集
获取两个集合的公共部分。

a = {1,2,3}
b = {3,5,4}
c = a.intersection(b)
print(c)
3

集合差集
获取两个集合之间的不同部分。

a = {1,2,3}
b = {3,5,4}
c = a.difference(b)
print(c)

{1, 2}

集合并集
获取两个集合的并集。

a = {1,2,3}
b = {3,5,4}
c = a.union(b)
print(c)
{1, 2, 3, 4, 5}

三元运算符
用于在一行编写条件语句,语法结构为[if True] if [expression] Else {if False}

5.表达式

可用于布尔运算,如
{ == , !=,>,<,>=,<=}
6.Pickling
将对象转换为字符串并将字符串转储为一个文件的过程称为Pickling,反之unpickling。
7.函数
1.函数是一钟可以在代码中执行的语句序列,如果在你的代码中出现重复的语句,那么可以创建一个可重用的函数并在程序中使用它。
2.函数也可以引用其他函数。
3.函数消除了代码中的重复,这使得代码调试和问题查找变得更容易。
4.函数使得代码更易于理解且易于管理。
5.函数允许一个大型的应用程序拆分为一些小的模块。
定义一个新的函数

def fun():
    print('this is a fun')

调用一个函数

fun()

查看字符串的长度
可以调用len(x)

print(len('hello'))

参数
可以添加到一个函数中,使得函数更通用。
通过参数,可以将一个变量传递给方法。

def fun1(value1):
    print(value1)

*参数
如果想让函数使用任意数量的参数,那么需要在函数名称前添加

def fun1(*value1):
   print(value1)

fun1(123)
fun1(123,1238852,912.3)

**参数
**允许传递可变数量的关键字参数给函数,同时也可以传递一个字典值作为关键字参数。
return
函数能够返回一个值。
如果一个函数需要返回多个值的话,那么最好返回一个元祖(以逗号隔开每个值)。

在这里插入图片描述
Lambda 函数
是一种单行表达式的匿名函数
是一种内联函数
Lambda函数没有声明,只是通过一个表达式来实现。

m_la = lambda x,y,z : x-100+y-z
m_la(10,20,30)

函数的语法结构为:variable = lambda arguments : esperssion
lambda函数也可以作为参数传递给其他的函数。
dir()和help()
dir()用于显示定义的符号
help()用于显示帮助文档
8.模块
Python语言附带了200多个标准模块。
模块是一种将Python程序中相似功能进行分组的组件。
任何Python代码文件都可以打包为模块,然后在导入。
模块允许使用者在自己的代码解决方案中进行组件化设计。
模块提供了命名空间的概念,帮助使用者共享数据和服务。
模块鼓励代码重用,并减少变量名称冲突。
PYTHONPATH
这是python的环境变量,表示用于操作模块的python解释器所在的位置。PYTHONHOME是一个用于搜索该路径的模块。
如何导入模块
如果你有一个文件:File包含很多个函数,变量和对象,然后你可以将这些功能导入到其他类中。

import File

Python 内部会将模块文件编译为二进制在运行模块的代码,如果想导入模块中的所有对象;

import my_module

如果模块中包含的函数或对象为my_object,那么你可以将其打印出来。

print(my_midule.my_object)

值得注意的是,如果你不想在加载执行模块的话,那么你需要检查是否有__name__ == ‘main
From 导入模块
如果你只是想访问模块中的一个对象或某个部分:

from my_module import my_object

这种方式导入模块允许使用者在访问模块中的对象,而无需引用模块。
可以通过from* 来导入模块中的所有对象:

from my_module import *

值的注意的是,模块只能在第一次 import时导入,如果你想使用C模块,那么你可以使用PyImport_ImportModule。此外,如果你想在两个不同模块中使用定义相同的对象,那么可以将import和from结合起来导入模块。
9.包
Python 中包是模块的目录。
如果你的Python 代码中提供了大量功能,这些功能被分组到模块文件中,那么可以从模块中创建一个包,以便更好地分配和管理这些模块。
包能够更好滴管理和组织模块,这有助于使用者更轻松地解决问题和查找模块。
可以将第三方软件导入到代码中,如pandas/scikit learn 和 TensorFlow等等。
包可以包含大量的模块。
如果代码中的某些部分提供相似的功能,那么可以将模块分组到一个包中。

from packageroot.packagefolder.mod import  my_object

上图中packageroot 是一个根目录(root folder),packagefolder 是其根目录下面的一个子目录,而my_module是在packagefolder 目录下的一个python模块文件。
此外,文件夹可以作为命名空间。

from data_service.database_data_service.microsoft_sql.mod

值的注意的是,需要确保所导入的包中每个目录都包含一个__init__.py文件。
PIP
PIP是python的包管理器。
可以使用PIP来下载包。

pip install package_name

10.递归
函数调用自身的过程称为递归。
递归结构需要有一个退出检查,否则函数将进行无线循环。
11.框架Frames和栈Stack调用
Python代码被加载到堆栈中的框架。
函数及其参数和变量一起被加载到框架中。
框架以正确的执行顺序被加载到堆栈中。
堆栈描述了函数的执行,在函数外声明的变量被存储在__main__中。堆栈首先执行最后一个框架。
如果遇到运行错误,可以使用回溯(traceback)来查找函数列表。
12.编译(Compilation)与关联(Linking)
这些特征可用于一些以其他语言编写的文件,例如C或C++等。
一旦将代码写入文件后,可以将文件放在Modules目录中。
在Setup.local 文件中添加一行是非常重的,这能确保创建的文件能够被加载。
编译
允许无任何错误地进行新扩展的编译过程。
关联
一旦新的扩展编译完成,他们之间就会被关联。
13.迭代器
lterators
允许遍历(就是每个元素都打印出来(逐个打印))一个集合
所有迭代器都包含__iter__()和__next__()函数
只需要在列表,字典,字符串或集合上执行iter(x)即可
可以执行实例 next(iter),这里 iter = iter(list)
如果集合中元素项的数目非常大且无法一次加载内存中的所有文件,此时迭代器很有用
有一些通用的迭代器使开发人员能够实现函数是编程
Filter
根据条件过滤掉相应的值
Map
对集合中的每个值进行计算,即将值进行映射,如将文本转为整数值。
Reduce
减少集合中的值,即得到一个更小的集合,如集合求和,他本质上是可迭代的。
Zip
获取多个集合并返回一个新集合
新集合的每个项,包含每个输入集合中的元素
Zip允许同时对多个集合进行横向操作
14.面向对象设计–类Classes
Python 允许创建自定义类型,将这些用户自定义的类型称为类,这些类具有自定义属性和功能。
面向对象的设计允许程序员根据自身所需的属性和功能j自定义创建对象。
属性也可以引用另一个对象。
Python中的类可以引用其他类。
Python支持封装–实例函数和变量。
Python支持继承。
类的一个实例称为对象,对象具有可变性,一旦创建对象,相应的属性也将被更新。

–init–
–init–函数在所有类中都存在,当需要进行类实例化时,该函数就将被执行。__init__函数可以根据需要设置相应的属性。

class m:
    def __init__(self,qq):
        self.qq = qq
    def mf(self):
       print('%s'%self.qq)
a = m(66)
a.mf()
66

值得注意的是,self 参数将包含对象的引用,这与 C# 语言中的 this 参数类似。
cmp
返回更大值
对象的深浅拷贝
等效对象-包含相同的值
相同对象-引用相同的对象-内存中指向相同的地址
如果想要复制整个对象,可以使用copy复制模块
这将导致浅拷贝,因为属性的引用指针将会被复制。
如果对象的一个属性是对象引用,那么他将简单地指向原始对象相同的地址。
更新原对象中的属性将导致目标对象中的属性也会更新。
浅拷贝是复制引用指针。
深拷贝将对对象进行新的引用
15.面向对象设计–继承
Python支持对象的继承,即对象可以继承其父类的功能和属性。
继承的类可以在其函数中包含不同的逻辑。
一个父类可以有多个子类。
类的继承属性鼓励代码的重用性和可维护性。
Python 支持多类继承。
调用父类函数

super(A,self).function_name()

16.垃圾收集–内存管理
Python 中的所有对象都是存储在一个维积空间,而Python解释器可以访问此空间。
python 有一个内置的垃圾收集机制,这就意味着可以自动的为程序进行分配和取消内存,。
垃圾收集机制主要是清除程序中为引用/使用的那些对象的内存空间。
由于多个对象可以共存内存引用,因此Python使用两种机制:
引用计数:计算引用对象的数目,如果对象的计数为0,则取消对象的空间分配。
循环引用:这张机制关注的是循环引用,当取消分配的数目大于阈值时,仅取消对象所在的内存空间分配。
也可以通过及时或者基于事件机制来进行手动的垃圾收集。
17.I/O
From Keyboard
使用raw_input()函数。
文件Files
使用with/as语句来打开并读取文件,此外,with语句还可以处理关闭连接和其他清理操作。
需要注意的是,readline()可用于读取文件中的每一行。
Python 中对文件的操作通常涉及os和shutil模块。rw表示读写,a代表可添加模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值