python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一)

一、python是静态还是动态类型?是强类型还是弱类型?

1、动态强类型语言(不少人误以为是弱类型)

不要傻傻分不清

2、动态还是静态指的是编译期还是运行期确定类型

3、强类型指的是不会发生隐式类型转换

若类型语言

20190726172419435953.png

强类型语言

20190726172419644945.png

4、python作为后端语言优缺点

1、胶水语言、轮子多、应用广泛

2、语言灵活、生产力高

3、性能问题、代码维护问题、python2/2兼容问题

动态语言一时爽、代码重构火葬场

二、什么是鸭子类型

当看到一只鸟走起来想鸭子、有用起来像鸭子、叫起来也想鸭子、那么这只鸟就可以被称为鸭子

1、关注点在对象的行为,而不是类型(duck typing)

2、比如 file、StringIO,socket对象都支持read/write方法(file like object)

2、在比如定义了 _iter_魔术方法的队形可以用for迭代

代码验证

1、代码

class Duck():

def quack(self):

print("gua gua")

class Person:

def quack(self):

print("我是人类,但我也会 gua gua gua")

def in_the_forest(duck):

duck.quack()

def game():

donald = Duck()

john = Person()

in_the_forest(donald)

in_the_forest(john)

print(type(donald))

print(type(john))

print(isinstance(donald,Duck))

print(isinstance(john,Person))

game()

2、输出结果

duck_type.py

gua gua

我是人类,但我也会 gua gua gua

True

True

Process finished with exit code 0

三、什么是monkey patch?那些地方用到了?自己如何实现?

1、所谓的monkey patch就是运行时替换

2、比如gevent库需要修改内置的socket

3、from gevent import monkey;monkey.patch_socket()

1、安装gevent

1.在https://pypi.org/project/gevent/#files下载你需要的gevent版本,保存到一个文件夹中

2.在cmd中,cd到你Python的Script下进行安装

3.cd 到你下载好的gevent 路径

4.进入gevent路径的系统盘中

5.pip install 下载好的gevent模块名

2、gevent库需要修改内置的socket

import socket

import gevent

print(socket.socket)

print("After momkey patch")

from gevent import monkey

monkey.patch_socket()

print(socket.socket)

import select

print(select.select)

monkey.patch_socket()

print("After momkey patch")

print(select.select)

输出如下:

monkey_path.py

After momkey patch

After momkey patch

3、自己实现monkey patch

import socket

import gevent

print(socket.socket)

print("After momkey patch")

from gevent import monkey

monkey.patch_socket("After momkey patch")

print(socket.socket)

import select

print(select.select)

monkey.patch_socket()

print("After momkey patch")

print(select.select)

import time

print(time.time())

def _time():

return 1234

time.time = _time

print(time.time())

输出结果如下:

monkey_path.py

After momkey patch

After momkey patch

1564107393.6268823

1234

Process finished with exit code 0

四、什么是自省?

运行时判断一个对象的类型的能力

python一切皆对象、用type、id、isinstance获取对象类型信息

ll = [1, 2, 3]

d = dict(a=1) #{a:1}

print(type(ll))

print(type(d))

print(isinstance(ll, list))

print(isinstance(d, dict))

def add(a, b):

if isinstance(a, int):

return a + b

elif isinstance(a, str):

return a.upper()+b

print(add(1, 2))

print(add(‘head‘, ‘tail‘))

输出结果如下:

introspection.py

True

True

3

HEADtail

Process finished with exit code 0

Inspect模块提供了更多获取时对象信息的函数

ll = [1, 2, 3]

d = dict(a=1) #{a:1}

print(type(ll))

print(type(d))

print(isinstance(ll, list))

print(isinstance(d, dict))

def add(a, b):

if isinstance(a, int):

return a + b

elif isinstance(a, str):

return a.upper()+b

print(add(1, 2))

print(add(‘head‘, ‘tail‘))

print(id(ll))

print(id(d))

print(ll is d)

print(ll is ll)

输出结果如下:

introspection.py

True

True

3

HEADtail

17718152

17742664

False

True

Process finished with exit code 0

五、什么是列表和字典推导

比如[i for i in range(10) if i % 2 == 0]

一种快速生成list/dict/set的方式,用来替代map/filter等

(i for i in range(10) if i % 2 == 0)返回生成器

a = [‘a‘, ‘b‘, ‘c‘]

b =[1, 2, 3]

# d = {‘a‘:1, ‘b‘:2, ‘c‘:3}

d = {}

for i in range(len(a)):

d[a[i]] = b[i]

print(d)

d = {k: v for k, v in zip(a,b)}

print(d)

输出结果:

compresion.py

{‘c‘: 3, ‘b‘: 2, ‘a‘: 1}

{‘c‘: 3, ‘b‘: 2, ‘a‘: 1}

六、知道python之禅吗?

Tim Peters 编写的关于Python编写的准则

import this

编程拿不准的时候可以参考

In [8]: import this

The Zen of Python, by Tim Peters

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren‘t special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you‘re Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it‘s a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let‘s do more of those!

原文地址:https://www.cnblogs.com/luoahong/p/11251661.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

由于开发者通过接口修改了菜单配置_开发者说:Seata 0.7.0 版本,你 get 'Metrics' 技能了吗?...

从用户的视角来感受一个开源项目的成长,是我们推出「开发者说」专栏的初衷,即在开发者进行开源项目选型时,提供更为立体的项目信息。专栏所有内容均来自作者原创/投稿,本文是「开发者说」的第9篇,作者郑扬勇&#xff0…

Java 多线程(三) 线程的生命周期及优先级

Java 多线程(三) 线程的生命周期及优先级 线程的生命周期 线程的生命周期:一个线程从创建到消亡的过程。 如下图,表示线程生命周期中的各个状态: 线程的生命周期可以分为四个状态: 1.创建状态: …

eclipse 导入maven项目_手把手的Spring Boot Web 项目教程,Hello Spring Boot

在开始之前,我们需要去创建一个SpringBoot项目,大家可以去 http://start.spring.io/ 这个网站生成一个项目。如图,这边可以对SpringBoot项目进行详细设置:下面这个web一定要勾选:SpringBoot版本号选择1.5.10全部设置好…

ASP.Net中实现中英文复合检索文本框

前段时间,写一个用户部门的管理页面,需要对后台获取的用户数据实现英汉检索功能。  同时,选定一个选项之后,需要触发事件与后台交互,将该用户所在的部门显示到页面右边的ListBox控件中。 一、Dojo的FilteringSelect组…

sklearn 安装_初识sklearn

我的主业是互联网运营,业余的python爱好者,学习python已经快两年,主攻网络爬虫与数据分析,爬虫能使用代理ip、打码平台、OCR识别、基本的js逆向处理反爬;数据分析主要使用pandas与pyecharts进行可视化,我的…

[工具库]JOJSONBuilder工具类——一键把多个bean对象数据转换为JSON格式数据

本人大四即将毕业的准程序员(JavaSE、JavaEE、android等)一枚,小项目也做过一点,于是乎一时兴起就写了一些工具。 我会在本博客中陆续发布一些平时可能会用到的工具。 代码质量可能不是很好,大家多担待! 代…

mysql long类型_怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!...

点击上方蓝色“冰河技术”,关注并选择“设为星标”持之以恒,贵在坚持,每天进步一点点!作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。…

状压dp之二之三 炮兵阵地/玉米田 By cellur925

一、简单的状压dp 玉米田 题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number of squares. Regrettably, some of the squares…

LockSupport的源码实现原理以及应用

一、为什么使用LockSupport类 如果只是LockSupport在使用起来比Object的wait/notify简单, 那还真没必要专门讲解下LockSupport。最主要的是灵活性。 上边的例子代码中,主线程调用了Thread.sleep(1000)方法来等待线程A计算完成进入wait状态。如果去掉Thr…

python3 爬虫 requests安装_BOSS直聘招聘信息获取之爬虫工具分析

点击蓝色“不太灵光的程序员”关注我哟加个“星标”,每天上午 09:30,干货推送!文中使用的组件库仅限于Python语言,由于最近收到一些同学的留言说,按照网上的教程一步一步的学习,却频繁的出现报错&#xff0…

假期周进度总计(四)

本周学习利用OEM工具创建删除表以及对表内数据进行增删改查的操作 一切均通过此工具进行,然后还学到了用SQL *Plus进行相应操作 本周每天4.5个小时,出现的错误就是点击的误操作,可以改正,下周进一步学习Oracle基本操作转载于:http…

Java集合框架(3)

Map(和Collection<E>一样都是集合框架的顶层接口) |--Hashtable:底层是哈希表数据结构&#xff0c;不可以用null对象作为键或值。它是线程同步的。 |--HashMap&#xff1a;底层是哈希表。允许使用null键null值&#xff0c;该集合是不同步的&#xff0c;效率高&#xff0c…

php函数从数组中取出指定的数目,PHP数组函数

1.array_rand()从数组中随机取出一个或多个元素(返回值是&#xff1a;随机元素的键)$arr[js,css,25,php,30];printf(%s,print_r($arr,true));//随机去2个元素$resarray_rand($arr,2);printf(%s,print_r($res,true));2.array_replace()使用后面数组元素相同 key 的值替换 array1…

存储过程 not supported yet_让我们来看看+Redis如何存储和计算一亿用户的活跃度

1前段时间&#xff0c;在网上看到一道面试题&#xff1a;如何用redis存储统计1亿用户一年的登陆情况&#xff0c;并快速检索任意时间窗口内的活跃用户数量。觉得很有意思&#xff0c;就仔细想了下 。并做了一系列实验&#xff0c;自己模拟了下 。还是有点收获的&#xff0c;现整…

HBase查询优化

1.概述 HBase是一个实时的非关系型数据库&#xff0c;用来存储海量数据。但是&#xff0c;在实际使用场景中&#xff0c;在使用HBase API查询HBase中的数据时&#xff0c;有时会发现数据查询会很慢。本篇博客将从客户端优化和服务端优化两个方面来介绍&#xff0c;如何提高查询…

NEC SV8100电话交换机配置梓博电话计费系统

为了节约办公成本&#xff0c;规范电话使用。公司最近为NEC SV8100电话交换机系统上线了一套梓博的电话计费系统。先将配置过程分享给各位。 1、登录电话交换机系统&#xff08;默认用户名tech、密码12345678&#xff09; 2、点击系统数据配置按钮 2、通过10-01选项调整电话交换…

判断闰年 php,PHP怎么判断一年是否为闰年?

判断是否为闰年的条件是满足下列二者条件之一&#xff1a;年号能被4整除、但不能被100整除&#xff0c;二是年号能被4整除&#xff0c;又能被400整除。那么PHP怎么判断一年是否为闰年&#xff1f;下面本篇文章就来给大家介绍一下使用PHP判断一年是否为闰年的方法&#xff0c;希…

redis desktop manager_面试官:Redis分布式锁如何解决锁超时问题?

Java面试笔试面经、Java技术每天学习一点Java面试关注不迷路作者&#xff1a;wangzaiplus来源&#xff1a;https://www.jianshu.com/u/8cb4591440ca一、前言关于redis分布式锁, 查了很多资料, 发现很多只是实现了最基础的功能, 但是, 并没有解决当锁已超时而业务逻辑还未执行完…

python print 换行_Python学习 | Python的基础语法

Python 语言与 Perl&#xff0c;C 和 Java 等语言有许多相似之处。但是&#xff0c;也存在一些差异&#xff0c;编写Paython程序之前需要对语法有所了解&#xff0c;才能编写规范的Python程序。一、行和缩进Python最大的特点之一就是Python 的代码块不使用大括号 {}了&#xff…

python 创建文件_Python入学首次项目,新手必看,简单易操作

继昨天文章python软件pycharm安装教程之后&#xff0c;今天则给新手小白们分享一哈&#xff0c;怎么制作并创建文件。print “hello world”&#xff1b;如后期需要资料文件的则可以私信留言&#xff0c;领取首次项目资料。本节知识点&#xff1a;python项目的创建pycharm的使用…