面试常问Python68道题

介绍

    如果你在寻找python工作,那你的面试可能会涉及Python相关的问题。通过对网络资料的收集整理,本文列出了100道python的面试题以及答案,你可以根据需求阅读测试。

python基础

Q1.什么是Python?

A1.Python是一种面向对象的,交互式的,解释型的计算机程序设计语言。Python的设计具有高可读性,它使用英语关键词而非标点符号,语法结构也比其他语言简单。

Q2.Python的主要功能是什么?

1)python是一种解释型语言,因此在使用python时不需要进行编译

2)声明变量和类似变量时,不需要重复声明变量的类型;

3)Python非常适合面向对象的编程,因为它允许类的定义以及组合和继承;

4)函数是第一类对象,这意味着它们可以分配给变量,从其他函数返回并传递给函数,类也是第一类对象;

5)用于许多领域,包括Web应用程序,自动化,科学建模,大数据应用程序等等。

Q3.Python中支持的数据类型有哪些?

Python支持5种数据类型:

1)Numbers(数字)——用于保存数值;

a=7.0

2)Strings(字符串)——字符串是一个字符序列,我们用单引号或双引号来声明字符串;

title="Data123"

3)Lists(列表)——列表就是一些值的有序集合,我们用方括号声明列表;

colors=['red','green','blue']

4)tuples(元组)——元组和列表一样,也是一些值的有序集合,区别是元组是不可变的,意味着我们无法改变元组内的值。

(1,2,3,abc)

5)Dictionary(字典)——字典(dictionary)是除列表以外Python之中最灵活的内置数据结构类型。

tinydict = {'name':'john','code':5762,'dept':'sales'}

列表是有序的对象结合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

Q4.列表和元组有什么区别?

列表和元组的区别

Q5.什么是Python模块?

A5.模块是一个Python脚本,通常包含import语句,函数,类和变量定义,以及Python可运行代码,文件的扩展名为“.py”。

Q6.python解释器种类以及特点?

CPython:这个解释器是用C语言开发的,所以叫 CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器;

IPython:IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强;

PyPy:PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代进行动态编译,所以可以显著提高Python代码的执行速度;

Jython:Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython:IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

Q7.什么是Python切片?

A7.Python中符合序列的有序序列都支持切片(slice),如:列表,字符,元祖

Python中切片的格式:[start : end : step]

Start:起始索引,从0开始,-1表示结束;End:结束索引;Step:步长

end-start=正数时,从左向右取值,=负数时反向取值

注意:切片结果不包含结束索引,即不包含最后一位,-1代表最后一个位置索引

str1 = 'abcdefghijklmnopqrstuvwxyz'

>>>str1[2:6]                            //'cdef'

Q8.Python中的%S是什么?

A8.Python支持将值格式化为字符串。虽然这可以包括非常复杂的表达式,但最基本的用法是将值插入到%s 占位符的字符串中 。

name = raw_input("who are you?")

print "hello %s" % (name,)

Q9.Python编程中的函数是什么?

函数是表示代码块并且是可重用实体的对象。

它为程序带来了模块化,并提供了更高程度的代码可重用性。

Python为我们提供了许多内置函数,例如print()等,并提供了创建用户定义函数的能力。

Q10.Python中有多少基本类型的函数可用?

Python为我们提供了两种基本类型的函数:内置和用户定义。

内置函数是Python语言的一部分,比如print(),dir(),len()和abs()等。

Q11.我们如何用Python编写函数?

我们可以通过以下方式创建Python函数。

1)用def定义函数并链接功能名称;

2)传递参数并使用括号将它们括起来,使用冒号来表示结尾;

3)添加所需的Python语句以供执行。

Q12.深拷贝和浅拷贝有什么区别?

深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。而浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。详情可参考我的上一篇文章,有详细说明。链接🔗

Q13.Python中的函数调用或可调用对象是什么?

Python中的函数被视为可调用对象。它可以允许一些参数,并以元组的形式返回一个值或多个值。除了函数之外,Python还有其他构造,例如类或适合同一类别的类实例。

Q14.Python中Pass和Continue有什么区别?

continue语句使循环从下一次迭代中恢复。pass语句指示什么都不做,代码的其余部分像往常一样执行。

Q15. PYTHONPATH环境变量的目的是什么?

PYTHONPATH - 它的作用类似于PATH。此变量告诉Python解释器在何处找到导入程序的模块文件。它应该包括Python源库目录和包含Python源代码的目录。PYTHONPATH有时由Python安装程序预设。

Q16.PYTHONSTARTUP,PYTHONCASEOK,PYTHONHOME,PYTHONSTARTUP环境变量的目的是什么?

PYTHONSTARTUP - 它包含一个包含Python源代码的初始化文件的路径。每次启动解释器时都会执行它。它在Unix中命名为.pythonrc.py,它包含加载实用程序或修改PYTHONPATH的命令。

PYTHONCASEOK - 在Windows中用于指示Python在import语句中查找第一个不区分大小写的匹配项。将此变量设置为任何值以激活它。

PYTHONHOME - 它是另一种模块搜索路径。它通常嵌入在PYTHONSTARTUP或PYTHONPATH目录中,以便于切换模块库。

Q17.如何在Python中实现多线程?

python主要是通过thread和threading这两个模块来实现多线程支持。

python的thread模块是比较底层的模块,python的threading模块是对thread做了一些封装,可以更加方便的被使用。但是python(cpython)由于GIL的存在无法使用threading充分利用CPU资源,如果想充分发挥多核CPU的计算能力需要使用multiprocessing模块(Windows下使用会有诸多问题)。

python3.x中已经摒弃了Python2.x中采用函数式thread模块中的start_new_thread()函数来产生新线程方式。python3.x中通过threading模块创建新的线程有两种方法:

1)通过threading.Thread(Target=executable Method)-即传递给Thread对象一个可执行方法(或对象)

2)继承threading.Thread定义子类并重写run()方法。第二种方法中,唯一必须重写的方法是run()。

Q18.如何在python中使用三元运算符?

Ternary运算符是用于显示条件语句的运算符。这包含true或false值,并且必须为其评估语句。

三元运算符将被给出为:

[on_true] if [expression] else [on_false]     

x,y = 25,50 

big =x if x <y else y

表达式的计算方式与x <y else y一样,在这种情况下,如果x <y为真,则返回值为big = x,如果不正确则返回big = y作为结果。

Q19.什么是Tkinter ?

TKinter是一款很知名的Python库,用它我们可以制作图形用户界面。其支持不同的GUI工具和窗口构件,比如按钮、标签、文本框等等。这些工具和构件均有不同的属性,比如维度、颜色、字体等。

Q20.Python中的继承

继承允许一个类获得另一个类的所有成员(比如属性和方法)。继承提供代码可重用性,使创建和维护应用程序更容易。

Python支持的不同类型的继承:

1)单一继承 - 派生类获取单个超类的成员;

2)多级继承 - 从基类base1继承的派生类d1,d2继承自base2;

3)分层继承 - 从一个基类可以继承任意数量的子类;

4)多重继承 - 派生类从多个基类继承。

Q21.请谈谈.pyc文件和.py文件的不同之处

虽然这两种文件均保存字节代码,但.pyc文件是Python文件的编译版本,它有平台无关的字节代码,因此我们可以在任何支持.pyc格式文件的平台上执行它。

Q22.什么是酸洗和去除?

Pickle模块接受任何Python对象并将其转换为字符串表示形式,并使用dump函数将其转储到文件中,此过程称为pickling。从存储的字符串表示中检索原始Python对象的过程称为unpickling。

Q23.在Python中命名与文件相关的模块?

Python为库/模块提供了一些函数,你可以在文件系统上操作文本文件和二进制文件。使用它们完成创建文件,更新内容,复制和删除文件的操作。这些库是:os,os.path和shutil。

Q24.解释使用with声明?

在python中,通常“with”语句用于打开文件,处理文件中存在的数据,还可以在不调用close()方法的情况下关闭文件。

Q25.解释Python支持的所有文件处理模式?

Python中可以使用三种方法打开文件。他们是:

1)通过分别指定标志“r”,“w”,“rw”,“a”,只读模式,只写模式,读写模式和附加模式;

2)通过指定选项“t”,可以在上述任何一种模式中打开文本文件;

3)“r”,“w”,“rw”和“a”,以便前面的模式变为“rt”,“wt”,“rwt”和“at”。二进制文件可以在任何一个中打开上述模式通过指定选项“b”以及“r”,“w”,“rw”和“a”使得前面的模式为“rb”,“wb”,“rwb”,“ab”。

Q26. Python支持多少种序列?

Python支持7种序列类型。它们是str,list,tuple,unicode,byte array,xrange和buffer。其中xrange在python 3.5.X中已弃用。

Q27.如何在Python中执行模式匹配?

正则表达式(RE)使我们能够指定匹配给定字符串的特定“部分”的表达式。例如,我们可以定义一个正则表达式来匹配单个字符或数字,电话号码或电子邮件地址等.Python的“re”模块提供正则表达式模式,并从Python 2.5的更高版本中引入。“re”模块提供搜索文本字符串的方法,或者替换文本字符串以及基于定义的模式拆分文本字符串的方法。

Q28.Python如何处理内存管理?

Python内存由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆,解释器负责处理此私有堆。Python对象的Python堆空间分配由Python内存管理器完成。核心API提供了一些程序员编写代码的工具。Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存并释放内存并使其可用于堆空间。

Q29.如何以相反的顺序显示文本文件的内容?

1)将给定文件转换为列表    2)使用reverse()函数反转列表。

Q30.什么是负索引

Python序列可以是正数和负数的索引。对于正索引,0是第一个索引,1是第二个索引,依此类推。对于负索引,( - 1)是最后一个索引,( - 2)是倒数第二个索引,依此类推。

Q31.解释Python中“re”模块的split(),sub(),subn()方法。

为了修改字符串,Python的“re”模块提供了3种方法。

1)split() - 使用正则表达式模式将给定字符串“拆分”到列表中;

2)sub() - 查找正则表达式模式匹配的所有子字符串,然后用不同的字符串替换它们;

3)subn() - 它类似于sub(),并且还返回新字符串和no。替换。

Q32.解释Python Flask中的数据库连接

Flask支持数据库驱动的应用程序(RDBS)。Flask允许以三种方式请求数据库

1)before_request():在请求之前调用它们并且不传递任何参数

2)after_request():在请求后调用它们并传递将发送到客户端的响应

3)teardown_request():在引发异常时调用它们,并且不保证响应。它们在响应构建后被调用。不允许他们修改请求,并忽略它们的值。

Q33. range和xrange有什么区别?

在大多数情况下,xrange和range在功能方面完全相同,它们都提供了一种生成整数列表的方法。唯一的区别是range返回一个Python列表对象,x range返回一个xrange对象。

Q34.Python中的“按值调用”是什么?

在call-by-value中,表达式或值是否绑定到函数中的相应变量的参数。Python会将该变量视为函数级范围中的本地变量。对该变量所做的任何更改都将保留在本地,并且不会反映在该函数之外。

Q35.什么是Python中的“按引用调用”?

我们可以互换地使用“引用调用”和“引用传递”。当我们通过引用传递参数时,它可以作为函数的隐式引用,而不是简单的副本。在这种情况下,对参数的任何修改也将对调用者可见。

该方案还具有带来更多时间和空间效率的优点,因为它留下了创建本地副本的需要。相反,缺点可能是函数调用期间变量可能会意外更改。

Q36.Lambda和Def之间的主要区别是什么?

当lambda是uni-expression函数时,Def可以包含多个表达式。Def生成一个函数并指定一个名称以便稍后调用它。Lambda形成一个函数对象并返回。Def可以有一个return语句。Lambda不能有return语句。Lambda支持在列表和字典中使用。

Q37.ascii、unicode、utf-8、gbk 区别?

ASCII码:使用一个字节编码,所以它的范围基本是只有英文字母、数字和一些特殊符号 ,只有256个字符;

Unicode:能够表示全世界所有的字节;

GBK:是只用来编码汉字的,GBK全称《汉字内码扩展规范》,使用双字节编码;

UTF-8:是一种针对Unicode的可变长度字符编码,又称万国码。

Q38.每当Python退出时,为什么不是所有的内存都被解除分配?

每当python退出时,尤其是那些对其他对象具有循环引用的Python模块或者从全局名称空间引用的对象并不总是被解除分配或释放。由于python拥有自己的高效清理机制,无法解除分配保留的那些内存部分会在退出时尝试取消分配/销毁其他所有对象。

Q 39.解释Python的参数传递机制

Python使用按引用传递(pass-by-reference)将参数传递到函数中。如果你改变一个函数内的参数,会影响到函数的调用。这是Python的默认操作。不过,如果我们传递字面参数,比如字符串、数字或元组,它们是按值传递,这是因为它们是不可变的。

Q41.大数据的文件读取

1、利用生成器generator          或      2、使用迭代器进行迭代遍历:for line in file

Q42.find和grep

grep命令是一种强大的文本搜索工具,grep搜索内容串可以是正则表达式,允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。find通常用来再特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。

Q44.如何提高python的运行效率

使用生成器;关键代码使用外部功能包(Cython,pylnlne,pypy,pyrex);针对循环的优化--尽量避免在循环中访问变量的属性

Q45.如何在Python中删除文件?

使用命令os.remove(filename)或os.unlink(filename)

Q46.Python中的yield用法

yield简单说来就是一个生成器,这样函数它记住上次返 回时在函数体中的位置。对生成器第 二次(或n 次)调用跳转至该函 次)调用跳转至该函数。

Q47.描述数组、链表、队列、堆栈的区别?

数组与链表是数据存储方式的概念,数组在连续的空间中存储数据,而链表可以在非连续的空间中存储数据;队列和堆栈是描述数据存取方式的概念,队列是先进先出,而堆栈是后进先出;队列和堆栈可以用数组来实现,也可以用链表实现。

Q48.如何使用我已经知道的URL地址本地保存图像?

将使用以下代码从URL地址本地保存图像:

import urllib.request

urllib.request.urlretrieve("URL地址", "local-filename.jpg")

Q49.请解释使用*args和*kwargs的含义

当我们不知道向函数传递多少参数时,比如我们向传递一个列表或元组,我们就使用*args:

args。它表示可以接收任意数量的位置参数,这些参数在函数内部被封装为一个元组。当使用 *args 时,它必须位于函数定义的参数列表的开始部分,因为位置参数位于关键字参数之前。

def func(*args):

  for i in args:

      print(i) 

func(3,2,1,4,7)

3

2

1

4

7

在我们不知道该传递多少关键字参数时,使用**kwargs来收集关键字参数:

它表示可以接收任意数量的关键字参数,这些参数在函数内部被封装为一个字典。kwargs 允许函数调用时传递不定数量的、带名称的参数。

def func(**kwargs):

  for i in kwargs:

      print(i,kwargs[i])

func(a=1,b=2,c=7)

a.1

b.2

c.7

Q50.解释如何从C访问用Python编写的模块?

您可以通过以下方法访问C中用Python编写的模块:

Module = = PyImport_ImportModule(“<modulename>”)

Q51.如何用Python输出一个Fibonacci数列?

a,b = 0, 1

while b<100:

  print (b)

  a, b = b, a+b

Q52.在Python中怎样将字符串转换为整型变量?

如果字符串只含有数字字符,可以用函数int()将其转换为整数。

int('22')

Q53.在Python中如何生成一个随机数?

要想生成随机数,我们可以从random模块中导入函数random()。

from random import random

random()

0.013501571090371978

我们还可以使用函数randint(),它会用两个参数表示一个区间,返回该区间内的一个随机整数。

from random import randint

randint(2,7)

4

Q54.怎样将字符串中第一个字母大写?

最简单的方法就是用capitalize()方法。

'daxie'.capitalize()

'Daxie'

Q55.如何检查字符串中所有的字符都为字母数字?

对于这个问题,我们可以使用isalnum()方法。

'DATA123'.isalnum()

True

'DATA123!'.isalnum()

False

我们还可以用其它一些方法:

'123'.isdigit()#检测字符串是否只由数字组成

True

'123'.isnumeric()#只针对unicode对象

True

'data'.islower()#是否都为小写

True

'Data'.isupper()#是否都为大写

False

Q56.什么是生成器?

生成器会生成一系列的值用于迭代,这样看它又是一种可迭代对象。它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。我们定义一个能逐个“yield”值的函数,然后用一个for循环来迭代它。

def squares(n):

  i=1

  while(i<=n):

      yield i**2

      i+=1

for i in squares(5):

  print(i)

1

4

9

16

25

Q57.什么是迭代器?

迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。我们使用inter()函数创建迭代器。

odds=iter([1,2,3,4,5])#每次想获取一个对象时,我们就调用next()函数

next (odds)

1

next (odds)

2

next (odds)

3

next (odds)

4

next (odds)

5

Q58.请说说生成器和迭代器之间的区别

1)在使用生成器时,我们创建一个函数;在使用迭代器时,我们使用内置函数iter()和next();

2)在生成器中,我们使用关键字‘yield’来每次生成/返回一个对象;

3)生成器中有多少‘yield’语句,你可以自定义;

4)每次‘yield’暂停循环时,生成器会保存本地变量的状态。而迭代器并不会使用局部变量,它只需要一个可迭代对象进行迭代;

5)使用类可以实现你自己的迭代器,但无法实现生成器;

6)生成器运行速度快,语法简洁,更简单;

7)迭代器更能节约内存。

Q59.函数zip()的是干嘛的?

zip()可以返回元组的迭代器,如下:

list(zip(['a','b','c'],[1,2,3]))

[(‘a’,1), (‘b’, 2), (‘c’, 3)]

Q60.如何从列表中删除最后一个对象?

从列表中删除并返回最后一个对象或obj。

list.pop(obj = list [-1])


Django有关

Q61.请解释或描述一下Django的架构

对于Django框架遵循MVC设计,并且有一个专有名词:MVT,M全拼为Model,与MVC中的M功能相同,负责数据处理,内嵌了ORM框架;V全拼为View,与MVC中的C功能相同,接收HttpRequest,业务处理,返回HttpResponse;T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html,内嵌了模板引擎

Q62.Django,Pyramid和Flask之间的差异

Flask是一个“微框架”,主要用于具有更简单要求的小型应用程序。Pyramid适用于大型应用程序,具有灵活性,允许开发人员为他们的项目使用数据库,URL结构,模板样式等正确的工具。Django也可以像Pyramid一样用于更大的应用程序。它包括一个ORM。

Q63.讨论Django架构

Django架构1


Django架构2

开发人员提供模型,视图和模板,然后将其映射到URL,Django可以为用户提供服务。

Q64.解释如何在Django中设置数据库

Django使用SQLite作为默认数据库,它将数据作为单个文件存储在文件系统中。

如过你有数据库服务器-PostgreSQL,MySQL,Oracle,MSSQL-并且想要使用它而不是SQLite,那么使用数据库的管理工具为你的Django项目创建一个新的数据库。

无论哪种方式,在您的(空)数据库到位的情况下,剩下的就是告诉Django如何使用它。这是项目的settings.py文件的来源。

我们将以下代码行添加到setting.py文件中:

DATABASES ={'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

Q65.举例说明如何在Django中编写VIEW?

这是我们在Django中使用write一个视图的方法:

from django.http import HttpResponse

import datetime

def Current_datetime(request):

now =datetime.datetime.now()

html ="<html><body>It is now %s</body></html>"%now

return HttpResponse(html)

返回当前日期和时间,作为HTML文档。

Q66.提到Django模板的组成部分。

模板是一个简单的文本文件。它可以创建任何基于文本的格式,如XML,CSV,HTML等。模板包含在评估模板时替换为值的变量和控制模板逻辑的标记(%tag%)。


Django模板

Q67.在Django框架中解释会话的使用?

Django提供的会话允许您基于每个站点访问者存储和检索数据。Django通过在客户端放置会话ID cookie并在服务器端存储所有相关数据来抽象发送和接收cookie的过程。


Django框架如何解释会话

所以数据本身并不存储在客户端。从安全角度来看,这很好。

Q68.列出Django中的继承样式

在Django中,有三种可能的继承样式:

抽象基类:当你只希望父类包含而你不想为每个子模型键入的信息时使用;

多表继承:对现有模型进行子类化,并且需要每个模型都有自己的数据库表。

代理模型:只想修改模型的Python级别行为,而无需更改模型的字段。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容

  • 点我查看本文集的说明及目录。 本项目相关内容包括: 实现过程: CH7 创建在线商店 CH8 管理支付和订单 CH...
    学以致用123阅读 3,506评论 0 6
  • 〖如果命运不怀好意捅了你一刀,拔出来,擦干净,你转个身,可能你身后藏着大蛋糕。还是你爱吃的草莓味的哟〗 〖无论遇到...
    殊词三弄阅读 185评论 0 6
  • 危娜老师上课会经常提到一个词“因缘”,一切讲因缘,因缘到的话,时间画面水到渠成。 本着体验和服务心态成为小组长,危...
    当下即过阅读 544评论 8 10