一、介绍
在上一篇文章中,我们顺利地搭建了Python项目但也只是了解到了工具怎么用,对于Python的基础认识和应用相对缺少,本文以项目为目标对Python需要的知识进行普及。
二、整理
1、PyWeb如何声明一个包?
分析:每个依赖包都需要通过【_init_.py】这个来表明自己是个应用包 ,而我们from使用的是包里面的各种py里面的方法
2、如何引入依赖?
from django.urls import path
from web import views
from web.login import viewsLogin
urlpatterns = [
path('admin/', admin.site.urls),
path('web/', views.index),#内部的templates/xxx
path('web/indexWeb/', views.indexWeb),#外部的templates/web/xxx
path('web/indexOut/', views.indexOut),#外部的templates/xxx
path('web/login', viewsLogin.indexLogin),#内部的templates/login/xxx
]
说明:Python通过分包来存放代码,只有【APP模块】才能被作为包【import】出来使用,【from 指向的是从包里面要引用的方法路径】,如我们的【views.py】文件是在web文件夹下面,那么则【from web import views】,而我们的【viewLogin.py】文件是在【web.login】文件夹下面,则使用他的方法为:【from web.login import viewsLogin】或【from web.login import viewsLogin as login】
path('web/login', viewsLogin.indexLogin),
=>左边是我们浏览器的URL组成部分,右边是我们已经引入的文件里面要调动的方法名
3、变量问题
%s => 在拼接中代表着 ‘字符串’,用法:【%s你好,%s欢迎你,format('小可爱','鬼屋')】
%f => 代表float类型的数据占位符
%d => 代表整型的数据占位符
4、打印细节
print => 默认是换行打印
问题:有时候我们需要实现不换行的打印,只需要在语句后面添加逗号即可
5、【if-elif-else】语句
var res = True
if res:
print("你好")
else
6、标识符声明
说明:数字、字符,下划线,美元符等组成标识符,但不能以数字开头。同时下划线在python中具有特殊的含义,必须小心使用
_myname => 代表只能在当前文件中使用的变量或者方法,无法被import导出
__privateName => 类的私有成员,不能被外部引用
__specialMethod__ :python的内部特殊方法,__init__为构造方法
分析:官网推荐我们使用下划线组成标识符。但通常情况下为了进行良好的区别。我们使用下划线都是以【xxx_xxx_xxx】这样的形式去使用。
三、注意事项
1、异常点
=> 布尔值在python中首字母必须大写
=> 在python中空格也是代码中的空格
=> 字符串中添加“\n”会造成字符串回车,在"""\n""" 则不会发生
=> python是一个正则匹配和模糊匹配盛行的世界
=> 使用#字符代表注释
=> python通过严格的缩进和冒号来识别作用域
2、变量类型
说明:Python 中的变量赋值不需要类型声明。根据不同的需要分为五大类:
numbers :数字,包括各种整型,浮点型等
string :字符串
list :[] 列表,取代了Java中数组与集合的功能,可以根据索引分片[2:4],[2:],直接使用+号连接组合
tuple :tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )相当于只读的列表,操作与list一样
dict :{key1:value1,key2:value2}相当于java中Map对象,通过dict[key]取值。dict.keys(),dict.values()
说明:以上五种类型由于python没有变量类型声明因此有需要可以直接用
3、内置函数(用于数据类型之间的转化)
说明:此处参考自菜鸟教程,在开发中只在某些特殊地方使用
4、特殊运算符号
说明:在python中大部分的规则与java是保持一致的,但仍然存在某些常用而比较特殊的内容:
<算术运算符>
10**20 => 10的20次方
9//2 => 取计算结果的正数位,抛弃余数(向下取整) 。 -9//2=-5
===================================================================================================
<赋值运算符>
c *= a => c = c * a
c**= b => c = c** b
===================================================================================================
<位运算符>
& => a & b ,如果a和b都是1则结果为1,否则为零
| => a | b ,如果a和b有一个为1则结果为1,否则为零
^ => a ^ b , 如果a和b不相同则结果为1,否则为零
===================================================================================================
<成员运算符>
in => a in b , 元素a被完全包含在元素b里面则为True,b可能是列表,可能是元素
not in => a not in b ,元素a不在b里面
===================================================================================================
<身份运算符>
is => a is b , 判断两个标识符是不是引用自同个对象
is not => a is not b ,判断两个标识符是不是引用自不同对象
逻辑运算符 :
说明: 逻辑运算如果为真则按照第二位处理。非零为真
5、运算优先级
说明:运算的优先级基本上在每一种语言都是相同,但为了不制造出难以理解的麻烦,开发中都是尽量写出清晰明了的逻辑运算。
四、对象内容
说明:
=> 每个类对象都需要构建自己的构造方法。 self构造对象的实例,代码需要体现但实际使用可以忽略该栏位的入参
=> 实例化对象的方式与Java中实例化对象类似 :【xxxx = Employee()】
=> 入参信息会被init()给接收
<向对象添加属性>
print(getattr(t,'empCount')) #获取属性
print(setattr(t,'name',666)) #打印返回的none,但是设置成功了
print(hasattr(t,'empCount')) #判断是否存在属性值
delattr(t,'name') #删除对象中的某个属性
<对象内置类属性>