Code Monkey home page Code Monkey logo

learn-python's People

Contributors

zhangyanan0525 avatar

Watchers

 avatar  avatar

learn-python's Issues

tensorflow学习

暂时没学多少。大体知道是个什么东西。电脑上跑了点代码。

Django ORM学习

Django ORM学习

慕课网地址点这里

什么是ORM

Object-Relational Mapping
能将我们的对象自动的字节化到关系型数据库当中,充当业务逻辑层和数据库层的桥梁。
在Django的ORM中,一个类对应的就是一张表,一个对象对应数据库中一条记录,每个属性对应数据库中每个字段。当然数据库不一定非是mysql也可以是其他的关系型数据库。
image
在Django中我们如何开发模型类呢?这就是models.py文件的作用。
模型类有什么优势和劣势呢?
优势:不需要在代码里编写原声的sql语句了,能让我们通过操作对象的方式操作数据库,提升开发效率。
缺点:牺牲了执行效率,牺牲了性能。

常用的字段

贼多,用的时候去查吧

元数据Meta

Meta封装了一些数据库的信息,我们称之为元数据。

Django数据表操作

数据表生成:

python manage.py makemigrations生成数据库要执行的内容到migrations文件夹下面
python manage.py migrate执行我们刚生成的文件,把执行过程记录到django migrations表里,然后生成表。如果要删除模型类的话,首先是删除类的代码,然后删除migrations对应文件,然后删记录,然后删除那个表。(我没搞懂这他妈说的什么破玩意)

导入数据

代码里导入或者在控制台里用命令导入json都是可以的

导出数据

查询集 queryset

image

F对象与Q对象

F:用于操作字段的数据。或将一个字段与另一个字段进行比较。
Q:结合AND,OR,NOT,|,~,&实现复杂的查询

django

manage.py

与项目进行交互的命令行工具集的入口
输入 python manage.py会列出很多很多子命令。其中一个是runserver。
django自带的有一个小型的服务器。我们只要运行python manage.py runserver就可以启动它。
运行起来之后控制台会给出一个地址。127.0.0.1:8000如果我们想改变这个端口号。可以运行python manage.py runserver 9999就变成了9999

以下是myblog(你的项目里叫别的名字)这个文件夹下的文件

wsgi.py

全称:python web server gatewag interface python服务器网关接口
python应用与web服务器之间的接口,只有我们实现了这个接口,web服务器才能识别我们。

urls.py

url配置文件
项目中所有地址都需要我们自己去配置url

setting.py

项目的总配置文件。
DEBUG:True/False debug模式
ALLOWED_HOSTS:为了限定请求中的host值,以防止黑客构造包来发送请求。只有在列表中的host才能访问。不建议配置成*

init.py

声明模块。默认为空

python manage.py startapp blog

就能生成一个叫blog的应用。名字我随便起的。
不要忘了把这个名字添加到setting.py的INSTALL.APP里

以下是blog(你的项目里叫别的名字)这个文件夹里的文件

migrations

数据移植(迁移)模块。内容django自动生成的

admin

该应用的后台管理系统配置

apps.py

当前应用的配置

models.py

数据模块
类似于mvc中的m(模型)

test.py

自动化测试模块
django给我们提供了自动化测试的功能。我们只要编写代码就可以了

view.py

执行相应的代码所在的模块
代码逻辑处理的主要地点

编写Models

创建modles.py 并引入models模块
创建类,继承models.Model该类即是一张数据表
创建字段,字段即类里面的属性。
怎么把类转换成数据表呢?
1.运行命令python manage.py makemigrations app名(可选)
2.python manage.py migrate
就能生成数据表了
完了之后django会自动在migrations文件夹下生成移植文件
可以用python manage.py sqlmigrate 应用名 文件id 这个命令查看SQL语句

编写admin

什么是admin。admin是django自带的一个强大的自动化数据管理界面。被授权的用户可以直接在admin中管理数据。
那我们怎么使用admin呢?
运行python manage.py createsuperuser 命令可以创建超级用户
地址是localhost:8000/admin/

通过python_koans学到的知识点整理

通过python_koans学到的知识点整理

object相关

对象三要素:id(身份标识)、type(数据类型)和value(值)

str相关的

r

这个是表示不转义,使用真实字符。比如如下代码:
s = r'test\tddd'
s2 = 'test\tddd'
print(s)
print(s2)
输出结果是:
test\tddd
test ddd
其中s里面的\t就是使用真实字符\t,而不是转义为制表符

len()

Python len() 方法返回对象(字符、列表、元组等)长度或项目个数。

string = "It was the best of times,\n\
It was the worst of times."

len(string)  输出52

三引号 triple quotes (所见即所得)

python中三引号可以将复杂的字符串进行复制:

python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

三引号的语法是一对连续的单引号或者双引号(通常都是成对的用)。

三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

format()格式化函数

ord() chr() unichr()

ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

string.split() 拆分字符串成数组

re模块

re.match(pattern, string, flags=0)
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

re.search(pattern, string, flags=0)
re.search 扫描整个字符串并返回第一个成功的匹配。

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

还有几个不常用的函数

str.capitalize()
str.upper()
str.lower()
str.title()
str.swapcase()

None相关

isinstance(None, object) -->True

None 确实是object的实例

None is None -->True

There is only one None.None只有一个

None is not 0 -->True

None is not False -->True

List相关


noms = ['peanut', 'butter', 'and', 'jelly']

List可以从后边取值哦
noms[-1] --> 'jelly'
noms[-3] -->'butter'

List可以取第n个到第m个,组成新数组.省略一个参数也能用。如果用上负数,就会很奇怪,奇葩的用法。
noms[2:2] -->[]
noms[2:20] -->['and', 'jelly']
noms[2:0] -->[]
noms[2:] -->['and', 'jelly']
noms[:2]-->['peanut', 'butter']
noms[2:-1] -->['and']
noms[1,-1] -->TypeError: list indices must be integers or slices, not tuple
noms[0,-1] -->TypeError: list indices must be integers or slices, not tuple
noms[0,-2] -->TypeError: list indices must be integers or slices, not tuple
可以用这种方式生成list: list(range(5))  -->  [0, 1, 2, 3, 4]

list_comprehensions

还可以用list_comprehensions生成list:
L = [i + 1 for i in range(5)]      -->[1,2,3,4,5]
这种方式用法很多很复杂,用时查文档

insert

knight = ['you', 'shall', 'pass']
knight.insert(2, 'not')
knight      -->    ['you', 'shall', 'not', 'pass']
这个方法没有返回值,但是会改变原list

append

stack = [10, 20, 30, 40]
stack.append('last')
stack   -->   [10, 20, 30, 40, 'last']
这个方法没有返回值,但是会改变原list

pop

stack = [10, 20, 30, 40]
popped_value = stack.pop()
popped_value   --->   40

assignment

1
first_name, last_name = [["Willie", "Rae"], "Johnson"]
first_name --> ["Willie", "Rae"]
last_name ---> "Johnson"
2
first_name = "Roy"
last_name = "Rob"
first_name, last_name = last_name, first_name
first_name ---> "Rob"
last_name ---> "Roy"

in 和not in

要判断特定的值是否存在列表中,可使用关键字in,判断特定的值不存在列表中,可使用关键字not in

letters = ['A','B','C','D','E','F','G']

if 'A' in letters:
    print('A'+' exists')

if 'h' not in letters:
    print('h'+' not exists')

join()和js里很不一样

str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq )  -->a-b-c

range函数

range() 函数可创建一个整数列表,一般用在 for 循环中。
range(start, stop[, step])
type(range(5)) --> range
range(0, -10, -1) -->[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
但是括号中可以传参数,可以移除其他位置的元素。
会改变原list

for i in range(len(x)) :
     print(x[i])

打印出
r
u
n
o
o
b

is 和==是不一样的

==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等
is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同

isinstance() 与 type() 区别

type() 不考虑继承关系。isinstance() 考虑继承关系。

class A:
    pass
  
class B(A):
    pass
  
isinstance(A(), A)    # returns True
type(A()) == A        # returns True
isinstance(B(), A)    # returns True
type(B()) == A        # returns False

dict相关

babel_fish = { 'one': 'uno', 'two': 'dos' }

dict也有len方法哦     
len(babel_fish) --> 2

dict 也有dict.keys(),dict.values()方法

fromkeys()
fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
dict.fromkeys(seq[, value])
person = {}.fromkeys(('name', 'age', 'sex'),10)
person   --->   

tuple相关

这就是一个元组 : count_of_three =  (1, 2, 5)
元组不能改,要想改,先转化成list,改完了再转换成tuple
元组的转化: tuple("Surprise!")   --->   ('S', 'u', 'r', 'p', 'r', 'i', 's', 'e', '!')
来点神奇的东西:
().__class__    --->tuple
(1).__class__   --->int
'1' == (1)     ---> False

doc

__doc__用来访问模块,类声明或者函数的声明中第一个未被赋值的字符串.

def method_with_documentation(self):
        "A string placed at the beginning of a function is used for documentation"
        return "ok"

method_with_documentation.__doc__ -->   'A string placed at the beginning of a function is used for documentation'

_、__和__xx__的区别

看这篇文章

1、 _xx 以单下划线开头的表示的是protected类型的变量。即保护类型只能允许其本身与子类进行访问。若内部变量标示,如: 当使用“from M import”时,不会将以一个下划线开头的对象引入 。

2、 __xx 双下划线的表示的是私有类型的变量。只能允许这个类本身进行访问了,连子类也不可以用于命名一个类属性(类变量),调用时名字被改变(在类FooBar内部,__boo变成_FooBar__boo,如self._FooBar__boo)

3、 __xx__定义的是特列方法。用户控制的命名空间内的变量或是属性,如init , __import__或是file 。只有当文档有说明时使用,不要自己定义这类变量。 (就是说这些是python内部定义的变量名)

True False

[] --->False
() --->False
{} --->False
set() --->False
None --->False
0 --->False
"" --->False
' ' --->True

set

集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

sorted()

把不是list的数据(比如set类型的数据)转成list类型返回。不会操作原数据。

iter

list、tuple等都是可迭代对象,我们可以通过iter()函数获取这些可迭代对象的迭代器。然后我们可以对获取到的迭代器不断使⽤next()函数来获取下⼀条数据。iter()函数实际上就是调⽤了可迭代对象的 iter ⽅法。当然也可以用for in来循环

map

map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回

filter

filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.