开启虚拟环境

创建虚拟环境

python -m vuev [tutorial-env]

运行虚拟环境

[tutorial-env]\Scripts\activate.bat

包管理工具基本操作

  1. 下载包
    pip install novas
    pip install requests ==2.6.0 下载对应版本
    
  2. 卸载包
    pip uninstall novas
    
  3. 显示包信息
    pip show flask
    
  4. 将包列表输出到requirements.txt中,方便统一下载
    pip freeeze > requirements.txt
    

    输入输出测试工具

  5. 输入
    input("请输入你的名字?")
    

    input()函数提供程序与用户的交互功能,input函数返回值数据类型为字符串

  6. 输出
    print('山西优逸客')
    print('山西优逸客','PythonWeb',1+1)
    print('山西优逸客',end="\n")
    

    print()函数可以传入一个参数,也可以传入多个参数,参数可以是任意类型包括表达式。
    end参数 默认为\n 每次print后会在输出内容最后换行

    变量

    计算机内存储运算结果的容器

    变量定义赋值语法
  7. 普通赋值
    a=1
    
  8. 链式赋值
    a=b=c=1
    
  9. 多元赋值
    x,y=1,2
    
    变量命名特点
  10. 变量名不可以是关键字和保留字
  11. 变量名可以由字母数字下划线组成,数字不开头
  12. 区分大小写
  13. 不支持特殊符号,例如 ! @ % $
    变量特性
  14. 不支持自增自减
  15. 变量可以存储不同的数据类型

数据类型

python常用数据类型分为:bool int float str None list tuple dict set

数据类型

1. 数字类型

* 整数 int
* 浮点数 float
* 0b二进制
* 0o八进制
* 0x十六进制
* 3e2 科学计数法

2. 字符串类型 str

* 字符编码:ASCII GBK GB2312 UTF-8 unicode
* 字符串定义:'' ""  ''' '''  """ """
* 转义字符:\'  \"  \\   \t制表符    \r回车    \n换行
* 前缀 r"abc"取消转义  u"abc"   b"abc"兼容性处理  f"abc"模板字符串
模板字符串
name="小白"
print(f"{name}你好")
print("%s你好"%name) # %s str
print("我有%d个手机"%10) #%d 整型
print("day%2d"%10)
print("day%2d"%1)
print("价格为%0.2f元"%10)
print("%s您好,这里有%d个手机,一共价值%0.2f元"%("小白"10,10000))
字符串访问
str1[index] index可以为负
切片
语法 "abcdef"[start:end:step]
start 开始的下标,默认 0
end 结束前的下标,默认 Length
step 步进值 可有可无 默认1
str1="山西优逸客科技有限公司"
print(str1[2:5:1])
print(str1[::])
print(str1[-5:-1])
print(str1[-1:-5:-1])
负号代表逆向

3. None

bool True False

4. 列表

arr=[]

注意:

  1. 可以定义空列表
  2. 可以定义只有一个元素的列表
  3. 元素可以是任意类型 ``` arr=[] arr.append()#末位添加 arr.append("abc") arr.insert(0,"123")#选择位置 print(arr) arr[index] #修改 arr[index] #删除 arr=[1,2,3,4]

arr.remove(1)#删除元素

arr.pop(0)#删除下标

arr.clear()#清空

del arr[0]

打印print(dir(arr))

#### 5. 元组
t1=()
注意:  
1. 可以定义没有元素的元组
2. 也可以定义只有一个元素的元组(1,)
3. 元组是不可改变的列表
#### 6. 字典 dict

d1={'name':'xb','age':19} name='name1' d1={name:'xb','age':19} print(d1)

注意:  
1. 字典的键值是没有顺序的
2. 字典的键是不可变量(数字类型 字符串 None True False )
## 字典的基本操作
增

d1={'name':'xb','age':19} d1['sex']='男'

d1.update({'sex':'男'})

删除

d1.pop('name') di.popitem()#末位删除 del d1['name']

修改

d1['name']=""

访问

print(d1['name']) d1.get('sex','暂无')


#### 7. 集合 set
s={1,2,3,4,5,6}
注意:
1. 集合是不重复的

##### 集合的基本操作
1. 增加

s={1,2,3,4,5} s.update({7,8,9}) s.update("afdsa") s.update(['aa','bb']) s.add(77) print(s)

2. 删除

s={1,2,3,4,5,6} s.pop #首位删除 s.remove(2) s.clear() print(s)

3. 交集、并集、补集
    * 交集
    print(s&s1)
    ```
* 并集
    ```
    print(s|s1)
    ```
* 补集
    ```
    print(s^s1)
    ```
int float bool None list tuole dict set
可变数据类型:list dict set

测试数据类型

type()

数据类型转换

int()
float()
str()
bool()
dict()
set()
tuple()

运算符

算数运算符

+ - * / %

//取整 **幂运算

+ 可以连接 字符串 列表元组
* 重复 字符串 列表 元组
print("abc"+"bcd")
print([1,2,3]+[4,5,6])
print((1,2,3)+(4,5,6))
print("abc"*3)
print([1,2,3]*3)
print((1,2,3)*3)

/ 结果为float
print(10/2)
//
print(10//3) #向下取整

** 幂运算
print(2**10)
赋值运算符
= += -= *= /= %= //= **=
关系运算符
> >= < <= == !=

not in in#包含   
is/is not #是否为同一个
逻辑运算符
and or not
严格遵循短路原则
三元运算符
print("1>2") if 1>2 else print("2>1")
一元运算符
del
return
global
nonlocal
运算符优先级
索引运算符    x[index] 或 x[index:index2[:index3]] 18、19
属性访问    x.attrbute                              17
乘方    **                                            16
按位取反    ~                                        15
符号运算符    +(正号)或 -(负号)                   14
乘、除    *、/、//、%                                    13
加、减    +、-                                        12
位移    >>、<<                                        11
按位与    &                                            10
按位异或    ^                                       9
按位或    |                                           8
比较运算符    ==、!=、>、>=、<、<=                    7
is 运算符    is、is not                                6
in 运算符    in、not in                              5
逻辑非    not                                            4
逻辑与    and                                         3
逻辑或    or                                         2

流程控制

分支语句

if 条件:
    代码块
elif 条件2:
    代码块
else:
    代码块

循环语句(遍历迭代对象)

for 
while
while 条件:
    pass

arr=[1,2,3,4,5,6]

for item in arr:
    print(item)

arr=range(1,100,1) #生成生成器,range(遍历对象,迭代递增)
print(list(arr))

for i in range(0,10):
    print(i)

break continue

for i in range(0,10)
    print(i)
    if i==5:
        break/continue
else:
    print("结束")

推导式

分类:

  1. 列表推导式
arr = [1,2,3,4,5,6]
arr1 = []
for item in arr:
    arr1.append(item**2)
arr1=[item**2 fot item in arr]
  1. 字典推导式
    d1
    
  2. 集合推导式

函数

函数的定义:

def 函数名([形参]...):
    函数体
    [return 返回值]

函数的调用

函数名([实参])

参数的用法:

  1. 必选参数
  2. 缺省参数,默认参数
    注意:默认参数只创建一次,默认参数必须放在必选参数之后
def fn(a,b=10):
    return a+b
fn(20)

# def fn(a,b):
#     return a+b
# res = fn(20,30)
# print(res)

def fn(a,b=[]):
    b.append(a)
    print(b)
# fn(20) #[20]
# fn(30)
# fn(40)
fn(10,[])
fn(20,[])
fn(30,[])
  1. 可变参数
def fn(*arg):
    pass
def mysum(a,b,*args):
    print(a,b,args)
  1. 关键字参数
def getUserInfo(**kwargs):
    print(keargs)
getUserInfo(age=19,sex12)

参数顺序:
必选参数>缺省参数>可变参数>关键字参数
  1. 解包
def fn(a,b,c)
    print(a,b,c)

t=[10,20,30]
fn(*t)

fn("xb",19)
d1={'name':'xb','age':'19'}
fn(**d1)

返回值用法

def fn():
    return 1,2,3,4,5
res = fn()
a,b,c,d,e = fn()
print(res,a,b,c,d,e)

名词解释 闭包:两个发生嵌套关系的函数,内部函数使用外部函数的变量,在全局情况下使用内部函数时发生闭包。保护数据

def fn():
    arr=[]
    def newFn(a):
        arr.append(a)
        print(arr)
    return newFn

newFn = fn()
newFn(1)
newFn(2)
newFn(3)
newFn(4)

高阶函数 柯里化

mysum(1)(2)(3)

def mysum(a):
    def mysum(b):
        def mysum(c):
            return a+b+c
        return mysum3
    return mysum2

res = mysum(10)(20)(30)
print(res)

递归:

def jc(num):
    if num==1:
        return 1
    else:
        return num*jc(num-1)

def jc(num):
    return 1 if num==1 else num*jc(num-1)

装饰器

功能:给原函数添加新的功能
特点,原则:

  1. 不改变原函数
  2. 不改变原函数的调用方式
  3. 同时满足1,2条件
import time
def fn():
    time.sleep(1)
    print("hello world")
def fn1():
    time.sleep(1)
    print("hello")
def fn2(fn):
    def newFn():
        start = time.time()
        fn()
        end = time.time()
        print(f"总时间为:{end-start}")
    return newFn
fn=fn2(fn)
fn1=fn2(fn1)
fn()
fn1()

万能传参

staus = 0 #没有登陆 1 登录

def login():
    global staus
    print("登录页面")
    username = input("请输入用户名") #str
    password = input("请输入密码")
    if username == "123" and password=="123456":
        staus = 1
        print("登录成功")
    else:
        print("登录失败")


def authLogin(fn):
    def newFn(*args,**kwargs):#万能传参
        if staus == 1:
            fn(*args,**kwargs)
        else:
            login()
    return newFn

@authLogin
def fn1(id):
    print("成绩查看页面%s"%id)
@authLogin
def fn2(id):
    print("课程查看页面%s"%id)

login()
fn1(10)
fn2(10)

作用域

global全局
local局部
nonlocal非局部

name = '小白'
def fn():
    # global name
    name = '小红'
    print(name)
    def newFn():
        # global name
        nonlocal name#非局部
        name="小黑"
        print(name)
    newFn()
    print(name)
fn()
print(name)

results matching ""

    No results matching ""