变量:在Python中,存储一个数据,须要一个叫作变量
的东西 num2 = 87 #num2是一个变量
html
变量的类型:python
程序中为了更充分的利用内存空间以及更有效率的管理内存,变量是有不一样的类型的,以下所示:shell
输入:python3版本中 input python2中raw_input()express
输出:print编程
内置对象,自定义对象,实列化数据结构
关键字:python一些具备特殊功能的标示符,这就是所谓的关键字闭包
关键字,是python已经使用的了,因此不容许开发者本身定义和关键字相同的名字的标示符函数式编程
一、 数字:用于存储数值。包括整型(Int),长整型(long integers) ,浮点型(floating point real values),复数(complex numbers)
函数
二、 布尔值 真或假 1 或 0工具
三、 字符串 :双引号或者单引号中的数据,就是字符串
字符串经常使用功能:
四、 列表:列表使用方括号——[]
基本操做:
五、元祖 :元组的元素不能修改。元组使用小括号——()组建立很简单,只须要在括号中添加元素,并使用逗号隔开便可
基本操做:
六、字典(无序):字典的每一个键值 key=>value 对用冒号 : 分割,每一个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中
经常使用操做:
经过for ... in ...:的语法结构,咱们能够遍历字符串、列表、元组、字典等数据结构。
注意python语法的缩进
>>> a_str = "hello itcast" >>> for char in a_str: ... print(char,end=' ') ... h e l l o i t c a s t
>>> a_list = [1, 2, 3, 4, 5] >>> for num in a_list: ... print(num,end=' ') ... 1 2 3 4 5
>>> a_turple = (1, 2, 3, 4, 5) >>> for num in a_turple: ... print(num,end=" ") 1 2 3 4 5
<2> 遍历字典的value(值)
<3> 遍历字典的项(元素)
<4> 遍历字典的key-value(键值对)
可变类型,值能够改变:
不可变类型,值不能够改变:
需求1、用户登录验证
# 提示输入用户名和密码
# 验证用户名和密码
# 若是错误,则输出用户名或密码错误
# 若是成功,则输出 欢迎,XXX!
# 根据用户输入内容打印其权限
# alex --> 超级管理员
# eric --> 普通管理员
# tony,rain --> 业务主管
# 其余 --> 普通用户
1:while循环
while
条件:
# 若是条件为假,那么循环体不执行
break用于退出全部循环
三、continue
continue用于退出当前循环,继续下一次循环
python内置函数
Python包含了如下内置函数
序号 | 方法 | 描述 |
---|---|---|
1 | cmp(item1, item2) | 比较两个值 |
2 | len(item) | 计算容器中元素个数 |
3 | max(item) | 返回容器中元素最大值 |
4 | min(item) | 返回容器中元素最小值 |
5 | del(item) | 删除变量 |
注意:cmp在比较字典数据时,先比较键,再比较值。
注意:len在操做字典数据时,返回的是键值对个数。
del有两种用法,一种是del加空格,另外一种是del()
def 函数名(参数):
...
函数体
...
返回值
|
函数的定义主要有以下要点:
定义了函数以后,就至关于有了一个具备某些功能的代码,想要让这些代码可以执行,须要调用它
调用函数很简单的,经过 函数名() 便可完成调用
示例以下:
def add2num(a, b): c = a+b print c
以调用上面的add2num(a, b)函数为例:
def add2num(a, b): c = a+b print c add2num(11, 22) #调用带有参数的函数时,须要在小括号中,传递数据
若是一个函数返回了一个数据,那么想要用这个数据,那么就须要保存
函数根据有没有参数,有没有返回值,能够相互组合,一共有4种
此类函数,不能接收参数,也没有返回值,通常状况下,打印提示灯相似的功能,使用这类的函数
此类函数,不能接收参数,可是能够返回某个数据,通常状况下,像采集数据,用此类函数
此类函数,能接收参数,但不能够返回数据,通常状况下,对某些变量设置数据而不需结果时,用此类函数
此类函数,不只能接收参数,还能够返回某个数据,通常状况下,像数据处理并须要结果的应用,用此类函数
一个函数里面又调用了另一个函数,这就是所谓的函数嵌套调用
以下图所示:
若是一个变量,既能在一个函数中使用,也能在其余的函数中使用,这样的变量就是全局变量
全局变量
global
进行声明,不然出错强龙不压地头蛇
调用函数时,缺省参数的值若是没有传入,则被认为是默认值
有时可能须要一个函数能处理比当初声明时更多的参数。这些参数叫作不定长参数,声明时不会命名。
基本语法以下:
def functionname([formal_args,] *args, **kwargs): "函数_文档字符串" function_suite return [expression]
加了星号(*)的变量args会存放全部未命名的变量参数,args为元组;而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。
Python中函数参数是引用传递(注意不是值传递)。对于不可变类型,因变量不能修改,因此运算不会影响到变量自身;而对于可变类型来讲,函数体中的运算有可能会更改传入的参数变量。
def 函数名(): 语句
def 函数名(): 语句 return 须要返回的数值
注意:
def 函数名(形参列表): 语句
注意:
def 函数名(形参列表): 语句 return 须要返回的数值

函数名([实参列表])
经过前面的学习知道一个函数能够调用其余函数。
若是一个函数在内部不调用其它的函数,而是本身自己的话,这个函数就是递归函数。
什么是闭包:内部函数对外部函数做⽤域⾥变量的引⽤(⾮全局变量),则称内部函数为 闭包。
闭包思考:
1.闭包似优化了变量,原来须要类对象完成的⼯做,闭包也能够完成 2.因为闭包引⽤了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存
用lambda关键词能建立小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
lambda函数的语法只包含一个语句,以下:
lambda [arg1 [,arg2,.....argn]]:expression
以下实例:
sum = lambda arg1, arg2: arg1 + arg2 #调用sum函数 print "Value of total : ", sum( 10, 20 ) print "Value of total : ", sum( 20, 20 )
以上实例输出结果:
Value of total : 30 Value of total : 40
Lambda函数能接收任何数量的参数但只能返回一个表达式的值
匿名函数不能直接调用print,由于lambda须要一个表达式
说的通俗点:模块就比如是工具包,要想使用这个工具包中的工具(就比如函数),就须要导入这个模块
在Python中用关键字import
来引入某个模块,好比要引用模块math,就能够在文件最开始的地方用import math来引入。
形如:
import module1,mudule2...
当解释器遇到import语句,若是模块在当前的搜索路径就会被导入。
在调用math模块中的函数时,必须这样引用:
模块名.函数名
有时候咱们只须要用到模块中的某个函数,只须要引入该函数便可,此时能够用下面方法实现:
from 模块名 import 函数名1,函数名2....
不只能够引入函数,还能够引入一些全局变量、类等
注意:
经过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,可是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数function( ),在模块B中也有函数function( ),若是引入A中的function在先、B中的function在后,那么当调用function函数的时候,是去执行模块B中的function函数。
若是想一次性引入math中全部的东西,还能够经过from math import *来实现
Python的from语句让你从模块中导入一个指定的部分到当前命名空间中
语法以下:
from modname import name1[, name2[, ... nameN]]
例如,要导入模块fib的fibonacci函数,使用以下语句:
from fib import fibonacci
把一个模块的全部内容全都导入到当前的命名空间也是可行的,只需使用以下声明:
from modname import *
In [1]: import time as tt In [2]: time.sleep(1)
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
在Python中,每一个Python文件均可以做为一个模块,模块的名字就是文件的名字。
好比有这样一个文件test.py,在test.py中定义了函数add
test.py
def add(a,b): return a+b
那么在其余文件中就能够先import test,而后经过test.add(a,b)来调用了,固然也能够经过from test import add来引入
main.py
import test result = test.add(11,22) print(result)
在实际开中,当一个开发人员编写完一个模块后,为了让模块可以在项目中达到想要的效果,这个开发人员会自行在py文件中添加一些测试信息,例如:
test.py
def add(a,b): return a+b # 用来进行测试 ret = add(12,22) print('int test.py file,,,,12+22=%d'%ret)
若是此时,在其余py文件中引入了此文件的话,想一想看,测试的那段代码是否也会执行呢!
main.py
import test result = test.add(11,22) print(result)

__all__
__all__
__all__
__init__.py
文件__init__.py
文件中写入
__init__.py
文件,那么这个文件夹就称之为包
__init__.py
文件有什么用__init__.py
控制着包的导入行为
__init__.py
为空仅仅是把这个包导入,不会导入包中的模块
__all__
在__init__.py
文件中,定义一个__all__
变量,它控制着 from 包名 import *时导入的模块
__init__.py
文件中编写内容能够在这个文件中编写语句,当导入时,这些语句就会被执行
__init__.py文件
python setup.py install
注意:
python setup.py install --prefix=安装路径
在程序中,使用from import 便可完成对安装的模块使用
from 模块名 import 模块名或者*