python编程从入门到实践 第18章Django入门 2022年最新
目录
18.1 建立项目
18.1.1 制定规范
18.1.2 建立虚拟环境
18.1.3 安装 virtualenv
18.1.4 激活虚拟环境
18.1.5 安装Django
18.1.6 在Django中创建项目
18.1.7 创建数据库
18.1.8 查看项目
18.2 创建应用程序
18.2.1 定义模型
18.2.2 激活模型
18.2.3 Django管理网站
1. 创建超级用户
2. 向管理网站注册模型
3. 添加主题
18.2.4 定义模型Entry
18.2.5 迁移模型 Entry
18.2.6 向管理网站注册 Entry
18.2.7 Django shell
18.3 创建网页:学习笔记主页
18.3.1 映射URL
18.3.2 编写视图
18.3.3 编写模板
18.4 创建其他网页
18.4.1 模板继承
1. 父模板
2. 子模板
18.4.2 显示所有主题的页面
1. URL模式
2. 视图
3. 模板
18.4.3 显示特定主题的页面
1. URL模式
2. 视图
3. 模板
4. 将显示所有主题的页面中的每个主题都设置为链接
18.5 小结
18.1 建立项目
18.1.1 制定规范
- 我们要编写一个名为“学习笔记”的Web应用程序,让用户能够记录感兴趣的主题,并在学习每个主题的过程中添加日志条目。
- “学习笔记”的主页对这个网站进行描述, 并邀请用户注册或登录。
- 用户登录后,就可创建新主题、添加新条目以及阅读既有的条目。
- 学习新的主题时,记录学到的知识可帮助跟踪和复习这些知识。
18.1.2 建立虚拟环境
learning_log$ python -m venv ll_env learning_log$
这里运行了模块venv ,并使用它来创建一个名为ll_env的虚拟环境。如果这样做管用,请跳到后面的18.1.4节;如果不管用,请阅读18.1.3节。
18.1.3 安装 virtualenv
$ pip install --user virtualenv
learning_log$ virtualenv ll_env New python executable in ll_env/bin/python Installing setuptools, pip...done. learning_log$
18.1.4 激活虚拟环境
learning_log$ ll_env\Scripts\activate ❶ (ll_env)learning_log$
要停止使用虚拟环境,可执行命令deactivate :
(ll_env)learning_log$ deactivate learning_log$
如果关闭运行虚拟环境的终端,虚拟环境也将不再处于活动状态。
18.1.5 安装Django
(ll_env)learning_log$ pip install Django Installing collected packages: Django Successfully installed Django Cleaning up... (ll_env)learning_log$
18.1.6 在Django中创建项目
❶(ll_env)learning_log$ django-admin startproject learning_log .❷ (ll_env)learning_log$ dirlearning_log ll_env manage.py ❸ (ll_env)learning_log$ dir learning_log ...asgi.py...__init__.py ...settings.py ... urls.py ... wsgi.py
18.1.7 创建数据库
(ll_env)learning_log$ python manage.py migrate ❶ Operations to perform: Synchronize unmigrated apps: messages, staticfiles Apply all migrations: contenttypes, sessions, auth, admin --snip-- Applying sessions.0001_initial... OK(ll_env)learning_log$ dir db.sqlite3 learning_log ll_env manage.py
18.1.8 查看项目
(ll_env)learning_log$ python manage.py runserver Performing system checks... ❶System check identified no issues (0 silenced). October 16, 2022 - 13:10:38 ❷Django version 4.1.2, using settings 'learning_log.settings' ❸Starting development server at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.
18.2 创建应用程序
learning_log$ ll_env\Scripts\activate (ll_env)learning_log$ python manage.py startapp learning_logs❶ (ll_env)learning_log$ dirdb.sqlite3 learning_log learning_logs ll_env manage.py ❷ (ll_env)learning_log$ dir learning_logs/admin.py apps.py__init__.py migrationsmodels.py tests.py views.py
18.2.1 定义模型
from django.db import models# Create your models here.
from django.db import models# 在这里创建模型
# Model--在Django中一个定义了模型基本功能的类
class Topic(models.Model):"""用户学习的主题"""text = models.CharField(max_length=200) # CharField字符数据date_added = models.DateTimeField(auto_now_add=True) # DateTimeField时间数据,# 参数auto_now_add=True,每当用户创建新主题时,这个属性自动设置为当前日期和时间# 告诉Django,默认使用哪个属性显示有关主题的信息。# __str__()显示模型的简单表示def __str__(self):"""返回模型的字符串表示"""return self.text
18.2.2 激活模型
--snip--
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages', 'django.contrib.staticfiles',)
--snip--
INSTALLED_APPS = ["django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.contrib.sessions","django.contrib.messages","django.contrib.staticfiles",# 我的应用程序"learning_logs",
]
(ll_env)learning_log$ python manage.py makemigrations learning_logs
Migrations for 'learning_logs':learning_logs\migrations\0001_initial.py- Create model Topic
(ll_env)learning_log$
(ll_env)learning_log$ python manage.py migrate
Operations to perform:Apply all migrations: admin, auth, contenttypes, learning_logs, sessions
Running migrations:❶ Applying learning_logs.0001_initial... OK
18.2.3 Django管理网站
1. 创建超级用户
(ll_env)learning_log$ python manage.py createsuperuser
❶ Username (leave blank to use 'ehmatthes'): ll_admin
❷ Email address:
❸ Password:Password (again):Superuser created successfully.
(ll_env)learning_log$
2. 向管理网站注册模型
from django.contrib import admin# Register your models here.
from django.contrib import admin# 向管理网站注册Topic模型
from learning_logs.models import Topic#这些代码导入我们要注册的模型Topic,再使用admin.site.register()admin.site.register(Topic)
#让Django通过管理网站管理我们的模型。
图18-2 包含模型 Topic 的管理网站
3. 添加主题
18.2.4 定义模型Entry
from django.db import models# 在这里创建模型
# Model--在Django中一个定义了模型基本功能的类
class Topic(models.Model):--snip--class Entry(models.Model):"""学到的有关某个主题的具体知识"""# 需要在两项数据之间建立联系时,Django使用与每项信息相关联的键。topic = models.ForeignKey(Topic, on_delete=models.CASCADE)text = models.TextField()date_added = models.DateTimeField(auto_now_add=True)# Meta存储用于管理模型的额外信息。设置一个特殊属性,Entries来表示多个条目。# 若无这个类,用Entrys表示多个条目class Meta:verbose_name_plural = 'entries'def __str__(self):"""返回模型的字符串表示"""return self.text[:50] + "..."
- 像Topic 一样,Entry 也继承了Django基类Model 。
- 第一个属性topic 是一个ForeignKey 实例。外键是一个数据库术语,它引用了数据库中的另一条记录;这些代码将每个条目关联到特定的主题。每个主题创建时,都给它分配了一个键(或ID)。需要在两项数据之间建立联系时,Django使用与每项信息相关联的键。稍后我们将根据这些联系获取与特定主题相关联的所有条目。
- 接下来是属性text ,它是一个TextField 实例。这种字段不需要长度限制,因为我们不想限制条目的长度。
- 属性date_added 让我们能够按创建顺序呈现条目,并在每个条目旁边放置时间戳。
- 我们在Entry 类中嵌套了Meta 类。Meta 存储用于管理模型的额外信息,在这里,它让我们能够设置一个特殊属性,让Django在需要时使用Entries 来表示多个条目。如果没有这个类, Django将使用Entrys来表示多个条目。
- 最后,方法__str__() 告诉Django,呈现条目时应显示哪些信息。由于条目包含的文本可能很长,我们让Django只显示text 的前50个字符(见❺)。我们还添加了一个省略号,指出显示的并非整个条目。
18.2.5 迁移模型 Entry
(ll_env)learning_log$ python manage.py makemigrations learning_logsMigrations for 'learning_logs':
❶ learning_logs\migrations\0002_entry.py
Create model Entry(ll_env)learning_log$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, learning_logs, sessions
Running migrations:
❷ Applying learning_logs.0002_entry... OK(ll_env)learning_log$
18.2.6 向管理网站注册 Entry
from django.contrib import admin# 向管理网站注册Topic模型
from learning_logs.models import Topic, Entryadmin.site.register(Topic)
admin.site.register(Entry)
- The opening is thefirst part ofthe game, roughly thefirst tenmoves or so. In the opening, it'sa good ideato do threethings— bring out your bishopsand knights, try to controlthecenter ofthe board,and castle your king.(国际象棋的第一个阶段是开局,大致是前10步左右。在开局阶段,最好做三件事情:将象和马调出来;努力控制棋盘的中间区域;用车将王护住。)
- Ofcourse, thesearejust guidelines. It will beimportant to learnwhen to followthese guidelinesand when to disregard thesesuggestions.(当然,这些只是指导原则。学习什么情况下遵守这些原则、什么情况下不用遵守很重要。)
- In the opening phase ofthe game, it's important to bring out your bishopsand knights. These piecesare powerfuland maneuverableenough to play asignificant rolein the beginningmoves ofa game.(在国际象棋的开局阶段,将象和马调出来很重要。这些棋子威力大,机动性强,在开局阶段扮演着重要角色。)
- One ofthe most importantconcepts in climbing is to keep your weight on your feetas much as possible. There'sa myth thatclimberscan hang all day on theirarms. In reality, good climbers have practiced specific ways of keeping their weight over their feet whenever possible.(最重要的攀岩概念之一是尽可能让双脚承受体重。有谬误认为攀岩者能依靠手臂的力量坚持一整天。实际上,优秀的攀岩者都经过专门训练,能够尽可能让双脚承受体重。)
当你单击Save时,将返回到主条目管理页面。在这里,你将发现使用text[:50] 作为条目的字符串表示的好处:管理界面中,只显示了条目的开头部分而不是其所有文本,这使得管理多个条目容易得多。
18.2.7 Django shell
(ll_env)learning_log$ python manage.py shell❶ >>> from learning_logs.models import Topic>>> Topic.objects.all()[<Topic: Chess>, <Topic: Rock Climbing>]
我们可以像遍历列表一样遍历查询集。下面演示了如何查看分配给每个主题对象的ID:
>>> topics = Topic.objects.all()>>> for topic in topics:... print(topic.id, topic)...1 Chess2 Rock Climbing
>>> t = Topic.objects.get(id=1)>>> t.text'Chess'>>> t.date_addeddatetime.datetime(2015, 5, 28, 4, 39, 11, 989446, tzinfo=<UTC>)
❶ >>> t.entry_set.all()[<Entry: The opening is the first part of the game, roughly...>, <Entry: In the opening phase of the game, it's important t...>]
- 例如,假设你有模型Pizza 和Topping ,而Topping通过一个外键关联到Pizza ;
- 如果你有一个名为my_pizza 的对象,表示一张比萨,就可使用代码my_pizza.topping_set.all() 来获取这张比萨的所有配料。
- 编写用户可请求的网页时,我们将使用这种语法。确认代码能获取所需的数据时,shell很有帮助。如果代码在shell中的行为符合预期,那么它们在项目文件中也能正确地工作。
- 如果代码引发了错误或获取的数据不符合预期,那么在简单的shell环境中排除故障要比在生成网页的文件中排除故障容易得多。
- 我们不会太多地使用shell,但应继续使用它来熟悉对存储在项目中的数据进行访问的Django语法。
18.3 创建网页:学习笔记主页
- 使用Django创建网页的过程通常分三个阶段:定义URL、编写视图和编写模板。首先,你必须定义URL模式。URL模式描述了URL是如何设计的,让Django知道如何将浏览器请求与网站URL匹配,以确定返回哪个网页。
- 每个URL都被映射到特定的视图视 ——视图函数获取并处理网页所需的数据。视图函数通常调用一个模板,后者生成浏览器能够理解的网页。为明白其中的工作原理,我们来创建学习笔记的主页。我们将定义该主页的URL、编写其视图函数并创建一个简单的模板。
- 鉴于我们只是要确保“学习笔记”按要求的那样工作,我们将暂时让这个网页尽可能简单。Web应用程序能够正常运行后,设置样式可使其更有趣,但中看不中用的应用程序毫无意义。就目前而言,主页只显示标题和简单的描述。
18.3.1 映射URL
from django.contrib import admin
from django.urls import pathurlpatterns = [path("admin/", admin.site.urls),
]
而我们需要包含learning_logs的URL:
# 导入为项目和管理网站管理URL的函数和模块
from django.urls import include, path
from django.contrib import admin# urlpatterns包含项目中的应用程序的URL
urlpatterns = [# admin.site.urls定义了在管理网站中请求的所有URLpath('admin/',admin.site.urls),# 指向learning_logs.urls模块,namespace让learning_logs的URL与项目中的其他URL区分path('', include(('learning_logs.urls','learning_logs'), namespace='learning_logs')),]
默认的urls.py包含在文件夹learning_log中,现在我们需要在文件夹learning_logs中创建另一个urls.py文件:
"""定义learning_logs的URL模式"""
from django.urls import path# 从当前的urls.py所在文件夹导入views
from . import views
app_name = 'learning_logs'# 包含可在应用程序learning_ logs中请求的网页
urlpatterns = [# 主页path('', views.index, name='index'),
]
- 为弄清楚当前位于哪个urls.py文件中,我们在这个文件开头添加了一个文档字符串。
- 接下来,我们导入了函数url ,因为我们需要使用它来将URL映射到视图,我们还导入了模块views ,其中的句点让Python从当前的urls.py模块所在的文件夹中导入视图。
- 在这个模块中,变量urlpatterns 是一个列表,包含可在应用程序learning_logs 中请求的网页。
- 实际的URL模式是一个对函数url() 的调用,这个函数接受三个实参。第一个是一个正则表达式。Django在urlpatterns 中查找与请求的URL字符串匹配的正则表达式,因此正则表达式定义了Django可查找的模式。
- 总体而言,这个正则表达式让Python查找开头和末尾之间没有任何东西的URL。Python忽略项目的基础URL(http://localhost:8000/),因此这个正则表达式与基础URL匹配。其他URL都与这个正则表达式不匹配。如果请求的URL不与任何URL模式匹配Django将返回一个错误页面。
- url() 的第二个实参指定了要调用的视图函数。请求的URL与前述正则表达式匹配时,Django将调用views.index (这个视图函数将在下一节编写)。第三个实参将这个URL模式的名称指定为index,让我们能够在代码的其他地方引用它。每当需要提供到这个主页的链接时,我们都将使用这个名称,而不编写URL。
正则表达式通常被称为regex,几乎每种编程语言都使用它。它们的用途多得难以置信,但需要经过一定的练习才能熟悉。如果你不明白前面介绍的内容,也不用担心,你在完成这个项目的过程中,将会看到很多正则表达式。
18.3.2 编写视图
from django.shortcuts import render# Create your views here.
from django.shortcuts import render# Create your views here.
def index(request):return render(request,'learning_logs/index.html')
18.3.3 编写模板
<p>Learning Log</p>
<p>Learning Log helps you keep track of your learning, for any topic you're learning about.</p>
18.4 创建其他网页
18.4.1 模板继承
1. 父模板
<p><a href="{% url 'learning_logs:index' %}">Learning Log</a>
</p>
{% block content %}{% endblock content %}
- 这个文件的第一部分创建一个包含项目名的段落,该段落也是一个到主页的链接。
- 为创建链接,我们使用了一个模板标签 ,它是用大括号和百分号({% %} )表示的。
- 模板标 签是一小段代码,生成要在网页中显示的信息。
- 在这个实例中,模板标签{% url 'learning_logs:index' %} 生成一个URL,该URL与learning_logs/urls.py中定义的名为index 的URL模式匹配。
- 在这个示例中,learning_logs 是一个命名空间 ,而index 是该命名空间中一个名称独特的URL模式。
- 我们插入了一对块标签。这个块名为content ,是一个占位符,其中包含的信息将由子模板指定。
- 子模板并非必须定义父模板中的每个块,因此在父模板中,可使用任意多个块来预留空间,而子模板可根据需要定义相应数量的块。
- 注意在Python代码中,我们几乎总是缩进四个空格。相比于Python文件,模板文件的缩进层级更多,因此每个层级通常只缩进两个空格。
<a href="link_url">link text</a>
2. 子模板
{% extends "learning_logs/base.html" %}
{% block content %}
<p>Learning Log helps you keep track of your learning, for any topic you'relearning about.</p>
{% endblock content %}
- 如果将这些代码与原来的index.html进行比较,可发现我们将标题LearningLog替换成了从父模板那里继承的代码
- 子模板的第一行必须包含标签{% extends %} ,让Django知道它继承了哪个父模板
- 文件base.html位于文件夹learning_logs中,因此父模板路径中包含learning_logs。这行代码导入模板base.html的所有内容,让index.html能够指定要在content 块预留的空间中添加的内容。
- 我们插入了一个名为content 的{% block %} 标签,以定义content 块。不是从父模板继承的内容都包含在content 块中,在这里是一个描述项目“学习笔记”的段落。
- 我们使用标签{% endblock content %} 指出了内容定义的结束位置。
18.4.2 显示所有主题的页面
1. URL模式
"""定义learning_logs的URL模式"""
from django.urls import path# 从当前的urls.py所在文件夹导入views
from . import views
app_name = 'learning_logs'# 包含可在应用程序learning_ logs中请求的网页
urlpatterns = [# 主页path('', views.index, name='index'),# 显示所有主题path('topics/', views.topics, name='topics')
]
2. 视图
from django.shortcuts import render
from .models import Topic# Create your views here.
def index(request):--snip--def topics(request):#显示所有主题topics = Topic.objects.order_by('date_added')context = {'topics':topics}return render(request,'learning_logs/topics.html',context)
- 我们首先导入了与所需数据相关联的模型。
- 函数topics() 包含一个形参:Django从服务器那里收到的request 对象。
- 我们查询数据库——请求提供Topic 对象,并按属性date_added 对它们进行排序。
- 我们将返回的查询集存储在topics 中。
- 我们定义了一个将要发送给模板的上下文。上下文是一个字典,其中的键是我们将在模板中用来访问数据的名称,而值是我们要发送给模板的数据。在这里,只有一个键—值对,它包含我们将在网页中显示的一组主题。
- 创建使用数据的网页时,除对象request 和模板的路径外,我们还将变量context 传递给render() 。
3. 模板
{% extends "learning_logs/base.html" %}
{% block content %}
<p>Topics</p>
<ul>{% for topic in topics %}<li>{{ topic }}</li>{% empty %}<li>No topics have been added yet.</li>{% endfor %}
</ul>
{% endblock content %}
- 就像模板index.html一样,我们首先使用标签{% extends %} 来继承base.html,再开始定义content 块。这个网页的主体是一个项目列表,其中列出了用户输入的主题。在标准HTML中,项目列表被称为无序列表,用标签<ul></ul> 表示。
- 我们使用了模板标签{% empty %} ,它告诉Django在列表topics 为空时该怎么办:这里是打印一条消息,告诉用户还没有添加任何主题。最后两行分别结束for 循环和项目列表。
{% for item in list %}do something with each item{% endfor %}
<p><a href="{% url 'learning_logs:index' %}">Learning Log</a> -<a href="{% url 'learning_logs:topics' %}">Topics</a>
</p>
{% block content %}{% endblock content %}
18.4.3 显示特定主题的页面
1. URL模式
"""定义learning_logs的URL模式"""
from django.urls import path,re_path# 从当前的urls.py所在文件夹导入views
from . import views
app_name = 'learning_logs'# 包含可在应用程序learning_ logs中请求的网页
urlpatterns = [# 主页path('', views.index, name='index'),# 显示所有主题path('topics/', views.topics, name='topics'),# 特定主题的详细页面re_path(r'^topics/(?P<topic_id>\d+)/', views.topic, name='topic'),
]
- 我们来详细研究这个URL模式中的正则表达式——r'^topics/(?P<topic_id>\d+)/' 。r 让Django将这个字符串视为原始字符串,并指出正则表达式包含在引号内。
- 这个表达式的第二部分(/(?P<topic_id>\d+)/ )与包含在两个斜杠内的整数匹配,并将这个整数存储在一个名为topic_id 的实参中。这部分表达式两边的括号捕获URL中的值;
- ?P<topic_id> 将匹配的值存储到topic_id 中;
- 而表达式\d+ 与包含在两个斜杆内的任何数字都匹配,不管这个数字为多少位。
- 发现URL与这个模式匹配时,Django将调用视图函数topic() ,并将存储在topic_id 中的值作为实参传递给它。
- 在这个函数中,我们将使用topic_id 的值来获取相应的主题。
2. 视图
--snip--
def topic(request,topic_id):#显示单个主题及其所有条目topic = Topic.objects.get(id=topic_id)entries = topic.entry_set.order_by('-date_added')context = {"topic":topic,'entries':entries}return render(request,'learning_logs/topic.html',context)
- 这是第一个除request 对象外还包含另一个形参的视图函数。
- 这个函数接受正则表达式(?P<topic_id>\d+) 捕获的值,并将其存储到topic_id 中。
- 我们使用get() 来获取指定的主题,就像前面在Django shell中所做的那样。
- 我们获取与该主题相关联的条目,并将它们按date_added 排序:date_added 前面的减号指定按降序排列,即先显示最近的条目。
- 我们将主题和条目都存储在字典context 中,再将这个字典发送给模板topic.html。
3. 模板
{% extends "learning_logs/base.html" %}{% block content %}
<p>Topic:{{ topic }}</p>
<ul>{% for entry in entries %}<li><p>{{ entry.date_added|date:'M d, Y H:i'}}</p><p>{{ entry.text|linebreaks }}</p></li>{% empty %}<li>There are no entries for this topic yet.</li>{% endfor %}
</ul>
{% endblock content %}
- 像这个项目的其他页面一样,这里也继承了base.html。
- 接下来,我们显示当前的主题,它存储在模板变量{{ topic }} 中。为什么可以使用变量topic 呢?因为它包含在字典context 中。
- 接下来,我们开始定义一个显示每个条目的项目列表,并像前面显示所有主题一样遍历条目。
- 每个项目列表项都将列出两项信息:条目的时间戳和完整的文本。为列出时间戳,我们显示属性date_added 的值。在Django模板中,竖线(| )表示模板过滤器—— 对模板变量的值进行修改的函数。过滤器date: 'M d, Y H:i' 以这样的格式显示时间戳:January 1, 2015 23:00。
- 接下来的一行显示text 的完整值,而不仅仅是entry 的前50个字符。
- 过滤器linebreaks将包含换行符的长条目转换为浏览器能够理解的格式,以免显示为一个不间断的文本块。
- 我们使用模板标签{% empty %} 打印一条消息,告诉用户当前主题还没有条目。
4. 将显示所有主题的页面中的每个主题都设置为链接
--snip
{% for topic in topics %}<li><a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a></li>{% empty %}
--snip
18.5 小结
- 在本章中,我通过它首先学习了如何使用Django框架来创建Web应用程序。
- 根据原有教程制定了简要的项目规范,在虚拟环境中安装了Django,创建了一个项目,并核实该项目已正确地创建。
- 同时还学习了如何创建应用程序,以及如何定义表示应用程序数据的模型。
- 学习了数据库,以及在修改模型后,Django可为我们迁移数据库提供什么样的帮助。
- 学习了如何创建可访问管理网站的超级用户,并使用管理网站输入了一些初始数据。
- 还探索了Django shell,它让我们能够在终端会话中处理项目的数据。
- 学习了如何定义URL、创建视图函数以及编写为网站创建网页的模板。
- 最后,我们使用了模板继承,它可简化各个模板的结构,并使得修改网站更容易。
python编程从入门到实践 第18章Django入门 2022年最新相关推荐
- python从入门到实践18章django存在问题_第18章 Django入门 P371
声音简介-感谢粉丝NN娜娜小天使的打赏,此音频即日起以24小时/天,1次/小时的速度更新,直至完结~ 特别说明: 此音频仅作为更好地阅读此书的辅助工具,请大家购买正版书籍. 所有音频全部免费供大家试听 ...
- 第 18 章 Django 入门
当今的网站实际上都是富应用程序(rich application),就像成熟的桌面应用程序一样.Python提供了一组开发Web应用程序的卓越工具.在本章中,我们将学习如何使用Django(http: ...
- 深度学习框架PyTorch入门与实践:第二章 快速入门
本章主要介绍两个内容,2.1节介绍如何安装PyTorch,以及如何配置学习环境:2.2节将带领读者快速浏览PyTorch中主要内容,给读者一个关于PyTorch的大致印象. 2.1 安装与配置 2.1 ...
- Python编程从入门到实践第五章部分习题
Python编程从入门到实践第五章部分习题 5-8 5-9` names = ['admin','zhang','li','zhao','song'] for name in names:if nam ...
- Python编程:从入门到实践 第三章--函数
Python编程:从入门到实践 第三章-函数 语法 就还是需要先记一下函数定义的语法: def Test(num):num = 12 如上,def func_name(factors): # code ...
- Python编程:从入门到实践第六章读书笔记6.3遍历字典
Python编程:从入门到实践第六章读书笔记6.3遍历字典 #coding:gbk#6.3.1遍历所有的键-值对 user_0 = {'username': 'efermi','first': 'en ...
- 读书笔记——《Python编程从入门到实践》第二章
读书笔记--<Python编程从入门到实践>第二章 读书笔记--<Python编程从入门到实践>第二章 变量 如何使用变量 如何规范变量命名 字符串 字符串是什么 如何修改字符 ...
- 《Python编程:从入门到实践》第二章练习题
<Python编程:从入门到实践>第二章练习题 <Python编程:从入门到实践>第二章练习题 1-1 简单消息 2-2 多条简单消息 2-3 个性化消息 2-4 调整名字的大 ...
- Python编程:从入门到实践第六章练习6.3
Python编程:从入门到实践第六章练习6.3 #coding:gbk#6-4词汇表2 #参照6.3练习.py#6-5河流 rivers = {'nile': 'egypt','yellow rive ...
最新文章
- AngularJS基于MVC的复杂操作案例
- 关于iPhone 中sqlite文件的使用
- Nginx教程--配置
- 有关python方面的论文_一篇文章可以带你理解python中的类
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 论文笔记 | Counterfactual Samples Synthesizing for Robust VQA
- 手机站的view.php,织梦网站文章内容页动态地址plus/view.php路径修改
- ASN.1编解码与编程
- prim算法_数据结构 7.4.1 最小生成树 Prim
- LeetCode 590. N叉树的后序遍历(N-ary Tree Postorder Traversal)
- 【Android Developers Training】 1. 创建一个Android项目工程
- 尚硅谷kylin单机版之安装kylin
- MDM9607 SE1801A安全芯片调试记录
- 软件工程概论期末复习笔记
- 微信昵称乱码 mysql_微信昵称乱码及mysql编码格式设立(utf8mb4)_mysql
- 计算机开机硬件检查,开机bios检测硬件信息方法
- 对于有关串口通信的clk的解释
- python输出古诗词_python爬虫——爬取古诗词
- Hive 多维度聚合分析查询
- 使用计算机正确坐姿,如何保持正确坐姿?(多图)