<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again -->
**Table of Contents**
- [Python语言特性](#python语言特性)
- [1 Python的函数参数传递](#1-python的函数参数传递)
- [2 Python中的元类(metaclass)](#2-python中的元类metaclass)
- [3 @staticmethod和@classmethod](#3-staticmethod和classmethod)
- [4 类变量和实例变量](#4-类变量和实例变量)
- [5 Python自省](#5-python自省)
- [6 字典推导式](#6-字典推导式)
- [7 Python中单下划线和双下划线](#7-python中单下划线和双下划线)
- [8 字符串格式化:%和.format](#8-字符串格式化和format)
- [9 迭代器和生成器](#9-迭代器和生成器)
- [10 `*args` and `**kwargs`](#10-args-and-kwargs)
- [11 面向切面编程AOP和装饰器](#11-面向切面编程aop和装饰器)
- [12 鸭子类型](#12-鸭子类型)
- [13 Python中重载](#13-python中重载)
- [14 新式类和旧式类](#14-新式类和旧式类)
- [15 `__new__`和`__init__`的区别](#15-__new__和__init__的区别)
- [16 单例模式](#16-单例模式)
- [1 使用`__new__`方法](#1-使用__new__方法)
- [2 共享属性](#2-共享属性)
- [3 装饰器版本](#3-装饰器版本)
- [4 import方法](#4-import方法)
- [17 Python中的作用域](#17-python中的作用域)
- [18 GIL线程全局锁](#18-gil线程全局锁)
- [19 协程](#19-协程)
- [20 闭包](#20-闭包)
- [21 lambda函数](#21-lambda函数)
- [22 Python函数式编程](#22-python函数式编程)
- [23 Python里的拷贝](#23-python里的拷贝)
- [24 Python垃圾回收机制](#24-python垃圾回收机制)
- [1 引用计数](#1-引用计数)
- [2 标记-清除机制](#2-标记-清除机制)
- [3 分代技术](#3-分代技术)
- [25 Python的List](#25-python的list)
- [26 Python的is](#26-python的is)
- [27 read,readline和readlines](#27-readreadline和readlines)
- [28 Python2和3的区别](#28-python2和3的区别)
- [29 super.`__init__`()](#29-super-init)
- [30 range-and-xrange](#30-range-and-xrange)
- [操作系统](#操作系统)
- [1 select,poll和epoll](#1-selectpoll和epoll)
- [2 调度算法](#2-调度算法)
- [3 死锁](#3-死锁)
- [4 程序编译与链接](#4-程序编译与链接)
- [1 预处理](#1-预处理)
- [2 编译](#2-编译)
- [3 汇编](#3-汇编)
- [4 链接](#4-链接)
- [5 静态链接和动态链接](#5-静态链接和动态链接)
- [6 虚拟内存技术](#6-虚拟内存技术)
- [7 分页和分段](#7-分页和分段)
- [分页与分段的主要区别](#分页与分段的主要区别)
- [8 页面置换算法](#8-页面置换算法)
- [9 边沿触发和水平触发](#9-边沿触发和水平触发)
- [数据库](#数据库)
- [1 事务](#1-事务)
- [2 数据库索引](#2-数据库索引)
- [3 Redis原理](#3-redis原理)
- [4 乐观锁和悲观锁](#4-乐观锁和悲观锁)
- [5 MVCC](#5-mvcc)
- [6 MyISAM和InnoDB](#6-myisam和innodb)
- [网络](#网络)
- [1 三次握手](#1-三次握手)
- [2 四次挥手](#2-四次挥手)
- [3 ARP协议](#3-arp协议)
- [4 urllib和urllib2的区别](#4-urllib和urllib2的区别)
- [5 Post和Get](#5-post和get)
- [6 Cookie和Session](#6-cookie和session)
- [7 apache和nginx的区别](#7-apache和nginx的区别)
- [8 网站用户密码保存](#8-网站用户密码保存)
- [9 HTTP和HTTPS](#9-http和https)
- [10 XSRF和XSS](#10-xsrf和xss)
- [11 幂等 Idempotence](#11-幂等-idempotence)
- [12 RESTful架构(SOAP,RPC)](#12-restful架构soaprpc)
- [13 SOAP](#13-soap)
- [14 RPC](#14-rpc)
- [15 CGI和WSGI](#15-cgi和wsgi)
- [16 中间人攻击](#16-中间人攻击)
- [17 c10k问题](#17-c10k问题)
- [18 socket](#18-socket)
- [19 浏览器缓存](#19-浏览器缓存)
- [20 HTTP1.0和HTTP1.1](#20-http10和http11)
- [21 Ajax](#21-ajax)
- [*NIX](#nix)
- [unix进程间通信方式(IPC)](#unixipc)
- [数据结构](#数据结构)
- [1 红黑树](#1-红黑树)
- [编程题](#编程题)
- [1 台阶问题/斐波纳挈](#1-台阶问题斐波纳挈)
- [2 变态台阶问题](#2-变态台阶问题)
- [3 矩形覆盖](#3-矩形覆盖)
- [4 杨氏矩阵查找](#4-杨氏矩阵查找)
- [5 去除列表中的重复元素](#5-去除列表中的重复元素)
- [6 链表成对调换](#6-链表成对调换)
- [7 创建字典的方法](#7-创建字典的方法)
- [1 直接创建](#1-直接创建)
- [2 工厂方法](#2-工厂方法)
- [3 fromkeys()方法](#3-fromkeys方法)
- [8 合并两个有序列表](#8-合并两个有序列表)
- [9 交叉链表求交点](#9-交叉链表求交点)
- [10 二分查找](#10-二分查找)
- [11 快排](#11-快排)
- [12 找零问题](#12-找零问题)
- [13 广度遍历和深度遍历二叉树](#13-广度遍历和深度遍历二叉树)
- [14 二叉树节点](#14-)
- [15 层次遍历](#15-)
- [16 深度遍历](#16-)
- [17 前中后序遍历](#17-前中后序遍历)
- [18 求最大树深](#18-求最大树深)
- [19 求两棵树是否相同](#19-求两棵树是否相同)
- [20 前序中序求后序](#20-前序中序求后序)
- [21 单链表逆置](#21-单链表逆置)
- [22 两个字符串是否是变位词](#22-两个字符串是否是变位词)
<!-- markdown-toc end -->
# Python语言特性
## 1 Python的函数参数传递
看两个例子:
```python
a = 1
def fun(a):
a = 2
fun(a)
print a # 1
```
```python
a = []
def fun(a):
a.append(1)
fun(a)
print a # [1]
```
所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。
通过`id`来看引用`a`的内存地址可以比较理解:
```python
a = 1
def fun(a):
print "func_in",id(a) # func_in 41322472
a = 2
print "re-point",id(a), id(2) # re-point 41322448 41322448
print "func_out",id(a), id(1) # func_out 41322472 41322472
fun(a)
print a # 1
```
注:具体的值在不同电脑上运行时可能不同。
可以看到,在执行完`a = 2`之后,`a`引用中保存的值,即内存地址发生变化,由原来`1`对象的所在的地址变成了`2`这个实体对象的内存地址。
而第2个例子`a`引用保存的内存值就不会发生变化:
```python
a = []
def fun(a):
print "func_in",id(a) # func_in 53629256
a.append(1)
print "func_out",id(a) # func_out 53629256
fun(a)
print a # [1]
```
这里记住的是类型是属于对象的,而不是变量。而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点)
当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系了.所以第一个例子里函数把引用指向了一个不可变对象,当函数返回的时候,外面的引用没半毛感觉.而第二个例子就不一样了,函数内的引用指向的是可变对象,对它的操作就和定位了指针地址一样,在内存里进行修改.
如果还不明白的话,这里有更好的解释: http://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference
## 2 Python中的元类(metaclass)
这个非常的不常用,但是像ORM这种复杂的结构还是会需要的,详情请看:http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python
## 3 @staticmethod和@classmethod
Python其实有3个方法,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下:
```python
def foo(x):
print "executing foo(%s)"%(x)
class A(object):
def foo(self,x):
print
没有合适的资源?快使用搜索试试~ 我知道了~
考试类精品--这个是自己日常改写和积累的python资料:本次资料提供大量的python面试的准备资料,包括常用的p.zip
共254个文件
py:219个
md:7个
xml:5个
需积分: 5 0 下载量 160 浏览量
2024-02-06
10:11:18
上传
评论
收藏 471KB ZIP 举报
温馨提示
考试类精品--这个是自己日常改写和积累的python资料:本次资料提供大量的python面试的准备资料,包括常用的p
资源推荐
资源详情
资源评论
收起资源包目录
考试类精品--这个是自己日常改写和积累的python资料:本次资料提供大量的python面试的准备资料,包括常用的p.zip (254个子文件)
pika-0.9.6.tar.bz2 216KB
simple.cgi 239B
environ.cgi 220B
.gitignore 41B
builder.graffle 3KB
patch8.gz 6KB
basictitle.html 107B
python代码段.iml 572B
haproxy.cfg.local_cluster 1005B
Readme.md 53KB
pattern.md 2KB
README.md 2KB
README.md 1KB
LICENSE.md 1KB
README.md 515B
README.md 441B
builder.png 29KB
base_python.py 59KB
request_python.py 13KB
创建型模式-单例模式.py 7KB
内置数据结构.py 6KB
restful_api.py 6KB
consistent_hash.py 6KB
布隆过滤器.py 5KB
设计模式六大原则.py 4KB
user_vhost_manager.py 4KB
most_common_ip.py 4KB
aiohttp_python.py 4KB
alert_consumer.py 4KB
url_in_two_file.py 3KB
api_queue_count_check.py 3KB
user_manager.py 3KB
python实现简单缓存和缓存装饰器.py 2KB
unique_int.py 2KB
queue_config_check.py 2KB
cluster_health_check.py 2KB
cluster_test_consumer.py 2KB
python实现的参数验证.py 2KB
创建型模式-建造者模式.py 2KB
get_similar_words.py 2KB
multiprocessing.py 2KB
hello_world_mirrored_queue_consumer_selective_nodes.py 2KB
queue_stats.py 2KB
amqp_queue_count_check.py 2KB
more_thread.py 2KB
创建型模式-抽象工厂.py 2KB
hello_world_mirrored_queue_consumer.py 2KB
quick_sort.py 2KB
node_lister.py 2KB
hello_world_consumer.py 2KB
delete_duplication.py 2KB
alert_producer.py 2KB
hello_world_producer_pubconfirm.py 2KB
rpc_server.py 1KB
api_ping_check.py 1KB
结构型模式-桥接模式.py 1KB
shovel_consumer.py 1KB
pycrypto加密解密.py 1KB
rpc_client.py 1KB
monkey patch.py 1KB
结构型模式-组合模式.py 1KB
行为型模式-解释器.py 1KB
行为型模式-状态模式.py 1KB
创建型模式-原型模式.py 1KB
oo1.py 1KB
pre_in_pos_traversal.py 1KB
n_largest_num.py 1KB
hello_world_producer_tx.py 1KB
shovel_producer.py 1KB
thread.py 1KB
行为型模式-观察者模式.py 1KB
print_common_part.py 1KB
amqp_ping_check.py 1KB
cluster_test_producer.py 1KB
hello_world_producer.py 1KB
结构型模式-适配器模式.py 1KB
行为型模式-中介者模式.py 1KB
创建型模式-工厂模式.py 1KB
remove_last_kth_node.py 1KB
shutdowndile.py 1KB
结构型模式-享元模式flyweight.py 1KB
re_construct_binary_tree.py 1023B
行为型模式-职责链模式.py 1016B
行为型模式-介绍模式.py 1016B
reverse_list.py 1010B
从头打印链表.py 1006B
short_bubble_sort.py 985B
two_stack_queue.py 978B
module.py 975B
has_sub_tree.py 924B
行为型模式-命令模式.py 923B
shutdown.py 922B
结构型模式-代理proxy模式.py 909B
行为型模式-模板模式.py 894B
结构型模式-外观模式.py 892B
merge_sort.py 890B
重建二叉树.py 859B
dirparse.py 856B
结构型模式-装饰器模式.py 833B
tls.py 805B
共 254 条
- 1
- 2
- 3
资源评论
码农阿豪
- 粉丝: 9885
- 资源: 1750
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 126641091882064LSPatch.apk
- 5G网络基础培训课件.zip
- 2024-spring-HIT-CS-大作业
- yolo目标检测项目实验
- downloadFile-1.hc
- C++课程设计:基于Qt的航班信息管理系统
- ADS7822UVerilog驱动,前面传的有点问题
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功