java程序员学习python记录

1、基于过程的区别

1、dict类型: 可以直接用 item[“name”]来进行访问

2、语法主要靠:号来控制

3、boolean变量

赋值主要是:  True和False,而不是true和false

赋值取反: not 变量名

4、没有i++的操作符

5、字符串操作:

比较: str1 is str2

连接字符串+不变

截取字符串:str[::-1]

print str[::-1] #创造一个与原字符串顺序相反的字符串
print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
print str[-3:] #截取倒数第三位到结尾
print str[:-5:-3] #逆序截取,具体啥意思没搞明白?

查找最后一个字符串位置str.rfind("/")

6、字符串转化:数字转字符串 str(数字)方法,字符串转数字,直接: int[x],其他类型类同

7、全局变量,声明要使用 global,过程中使用的时候要声明global

8、判断对象是否为空  x  is not None

9、定义模块,文件中增加如下四句话即可:

#!/usr/bin/env python

#encoding=utf-8

#Create by xxxxxx 2015-11-15 Version V1.0

#!/usr/bin/python

在调用 模块中的函数时,必须这样引用:模块名.函数名

10、Python中的包:包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。

简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。

考虑一个在 package_runoob 目录下的 runoob1.py、runoob2.py、__init__.py 文件,test.py 为测试调用包的代码,目录结构如下:

image

导入语法:

 
  
# !/ usr / bin / python# -*- coding: UTF - 8 -*- # 导入 Phone 包from package_runoob.runoob1 import runoob1from package_runoob.runoob2 import runoob2 runoob1()runoob2()

11、注解,单行注解#,多行注解成对""",比如:

def convert(self, s, numRows):

""" :type s: str :type numRows: int :rtype: str """

2、基于面向对象的区别

1、对象的引用this变为self,而且每个对象的属性必须使用self

2、实例化处理,java中  A a = new A(),在pytho中只需要 : a = A()

3、对象定义中每个方法都必须有self的参数

4、继承处理: java中: class Child extends Parent, python中需要使用:class Child(Parent):

5、私有属性和方法:__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。比如;__secretCount = 0 # 私有变量

6、单下划线、双下划线、头尾双下划线说明:
  • __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。

  • _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

  • __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

7、对象通用方法:

__init__ ( self [,args...] ) 构造函数 简单的调用方法: obj = className(args)

__del__( self ) 析构方法, 删除一个对象 简单的调用方法 : del obj

__repr__( self ) 转化为供解释器读取的形式 简单的调用方法 : repr(obj)

__str__( self ) 用于将值转化为适于人阅读的形式 简单的调用方法 : str(obj)

__cmp__ ( self, x ) 对象比较 简单的调用方法 : cmp(obj, x)

3、常见问题

1、安装的软件包的目录

https://stackoverflow.com/questions/31384639/what-is-pythons-site-packages-directory

image

2、Tornado-JSON的一个例子

参考文档: http://tornado-json.readthedocs.io/en/latest/using_tornado_json.html#helloworld-py

3、python生成thrift支持

http://thrift.apache.org/tutorial/py

4、pypy

PyPy是一个虚拟机项目,主要分为两部分:一个python的实现和 一个编译器PyPy的

第一部分: 用Python实现的Python其实这么说并不准确,准确得说应该是用rPython实现的Python,rPython是Python的一个子集,虽然rPython不是完整的Python,但用rPython写的这个Python实现却是可以解释完整的Python语言。

PyPy的第二部分:编译器这是一个编译rPython的编译器,或者说这个编译器有一个rPython的前端,目前也只有这么一个前端,不过它的后端却是不少,也就是说这个编译器支持许多的目标语言,比较重要的有:C,CIL,Javascript...

最常用的方式: python xxx.py 可以用pypy xxx.py来替换,使用pypy的解释器来处理,使用pypy性能上有很大的提升

PyPy在支持C语言编写的第三方库这方面一直存在问题,需要手动配置。而现在已受最受欢迎的数学和统计学库Numpy支持,也有很多库内置在PyPy中。 PyPy想要通过使用他们自己的C语言接口cffi来解决这个问题。相较于Python默认的C语言接口,Cffi是一个更快,更加Pythonic的实现,甚至很多非PyPy用户也很喜欢。但是,移植老的项目也并非微不足道的工作。

5、python调用c c++

主要使用ctypes,调用方式比较简单,参考文档:

https://blog.csdn.net/linda1000/article/details/12623527

https://www.cnblogs.com/yanzi-meng/p/8066944.html

6、关于python的慢

引用知乎的一个回答:

如果是计算密集型的应用,纯Python的性能比C,Java什么的要差。

一般的Web应用有大量的网络IO,磁盘IO,只有少量的逻辑判断和计算,这种时候Python的性能劣势不明显。

Python需要提高计算性能的时候,可以通过C扩展,Cython,或者Pypy的途径。

开发效率还是很重要的,这么『慢』的一门语言,在科学计算和数据分析领域能成为主要工具语言,是有道理的。

7、virtualenv管理多python环境

参考:

https://blog.csdn.net/zhang89xiao/article/details/76652245

https://blog.csdn.net/five3/article/details/46340401

 8、numpy矩阵和列表简单转化

a=([3.234,34,3.777,6.33])
b=np.array(a)
c=b.tolist()

4、pytho思维导图

思维导图

5、参考文档:

很好的入门参考文档:  http://www.runoob.com/python/python-object.html

python 2.7教程: https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000

python 3 教程: https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

python 2和python 3的主要区别: https://blog.csdn.net/t46414704152abc/article/details/79089451

csdn博客python系列文章: https://blog.csdn.net/linda1000/article/category/1250257

python整理的思维导图:  http://www.jb51.net/article/117105.htm 

python思维导图总结: https://zhuanlan.zhihu.com/p/26273120 

python知识整理1: https://github.com/Windrivder/pybook 

python知识和工具大全    https://github.com/jobbole/awesome-python-cn 

leetcode刷题(锻炼新语言能力)

157道题 https://github.com/csujedihy/lc-all-solutions
600题: https://github.com/princewen/leetcode_python
简书说明: https://www.jianshu.com/p/2580a523afe3


重点说明:函数编程相对于一般java程序员来说用的比较少,不影响开发功能,后续补充

猜你喜欢

转载自blog.csdn.net/everlasting_188/article/details/80242142