A. python3--内置函数
python的常用内置函数
1.abs() 函数返回数字的绝对值
abs(-40)=40
2. dict() 函数用于创建一个字典
>>dict()
>>{} #创建一个空字典类似于u={},字典的存取方式一般为key->value
例如u = {"username":"tom", "age":18}
3. help() 函数用于查看函数或模块用途的详细说明
>>help('math')查看math模块的用处
>>a=[1,2,3,4]
>>help(a)查看列表list帮助信息
4.dir()获得当前模块的属性列表
>> dir(help)
['__call__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__mole__', '__ne__', '__new__', '__rece__', '__rece_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
>>>
5.min() 方法返回给定参数的最小值 /参数可以为序列
>>> a= min(10,20,30,40)
>>> a
10
6. next() 返回迭代器的下一个项目
>>> it = iter([1, 2, 3, 4, 5])
>>> next(it)
1
>>>
>>> next(it)
2
>>>
7. id() 函数用于获取对象的内存地址
>>> a=12
>>> id(a)
1550569552
8.enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
>>> a=["tom","marry","leblan"]
>>> list(enumerate(a))
[(0, 'tom'), (1, 'marry'), (2, 'leblan')]
>>>
9. oct() 函数将一个整数转换成8进制字符串
>>> oct(15)
'0o17'
>>> oct(10)
'0o12'
>>>
10. bin() 返回一个整数 int 或者长整数 long int 的二进制表示
>>> bin(10)
'0b1010'
>>> bin(15)
'0b1111'
>>>
11.eval() 函数用来执行一个字符串表达式,并返回表达式的值
>>> eval('2+2')
4
12.int() 函数用于将一个字符串会数字转换为整型
>>> int(3)
3
>>> int(3.6)
3
>>> int(3.9)
3
>>> int(4.0)
4
>>>
13.open() 函数用于打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写
>>>f=open('test.txt')
14.str() 函数将对象转化为适于人阅读的形式
>>> str(3)
'3'
>>>
15. bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False
>>> bool()
False
>>> bool(1)
True
>>> bool(10)
True
>>> bool(10.0)
True
16.isinstance() 函数来判断一个对象是否是一个已知的类型
>>> a=5
>>> isinstance(a,int)
True
>>> isinstance(a,str)
False
>>>
17. sum() 方法对系列进行求和计算
>>> sum([1,2,3],5)
11
>>> sum([1,2,3])
6
>>>
18. super() 函数用于调用下一个父类(超类)并返回该父类实例的方法。super 是用来解决多重继承问题的,直接用类名调用父类方法
class User(object):
def__init__(self):
class Persons(User):
super(Persons,self).__init__()
19. float() 函数用于将整数和字符串转换成浮点数
>>> float(1)
1.0
>>> float(10)
10.0
>>>
20. iter() 函数用来生成迭代器
>>> a=[1,2,3,4,5,6]
>>> iter(a)
>>> for i in iter(a):
... print(i)
...
1
2
3
4
5
6
>>>
21.tuple 函数将列表转换为元组
>>> a=[1,2,3,4,5,6]
>>> tuple(a)
(1, 2, 3, 4, 5, 6)
>>>
22.len() 方法返回对象(字符、列表、元组等)长度或项目个数
>>> s = "playbasketball"
>>> len(s)
14
>>>a=[1,2,3,4,5,6]
>>> len(a)
6
>>>
23. property() 函数的作用是在新式类中返回属性值
class User(object):
def __init__(self,name):
self.name = name
def get_name(self):
return self.get_name
@property
def name(self):
return self_name
24.type() 函数返回对象的类型
25.list() 方法用于将元组转换为列表
>>> b=(1,2,3,4,5,6)
>>> list(b)
[1, 2, 3, 4, 5, 6]
>>>
26.range() 函数可创建一个整数列表,一般用在 for 循环中
>>> range(10)
range(0, 10)
>>> range(10,20)
range(10, 20)
>>>
27. getattr() 函数用于返回一个对象属性值
>>> class w(object):
... s=5
...
>>> a = w()
>>> getattr(a,'s')
5
>>>
28. complex() 函数用于创建一个复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数
>>> complex(1,2)
(1+2j)
>>> complex(1)
(1+0j)
>>> complex("1")
(1+0j)
>>>
29.max() 方法返回给定参数的最大值,参数可以为序列
>>> b=(1,2,3,4,5,6)
>>> max(b)
6
>>>
30. round() 方法返回浮点数x的四舍五入值
>>> round(10.56)
11
>>> round(10.45)
10
>>> round(10.45,1)
10.4
>>> round(10.56,1)
10.6
>>> round(10.565,2)
10.56
>>>
31. delattr 函数用于删除属性
>>> class Num(object):
... a=1
... b=2
... c=3.
..>>> print1 = Num()
>>> print('a=',print1.a)
a= 1
>>> print('b=',print1.b)
b= 2
>>> print('c=',print1.c)
c= 3
>>> delattr(Num,'b')
>>> print('b=',print1.b)
Traceback (most recent call last): File "", line 1, inAttributeError: 'Num' object has no attribute 'b'
>>>
32. hash() 用于获取取一个对象(字符串或者数值等)的哈希值
>>> hash(2)
2
>>> hash("tom")
-1675102375494872622
33. set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
>>> a= set("tom")
>>> b = set("marrt")
>>> a,b
({'t', 'm', 'o'}, {'m', 't', 'a', 'r'})
>>> a&b#交集
{'t', 'm'}
>>> a|b#并集
{'t', 'm', 'r', 'o', 'a'}
>>> a-b#差集
{'o'}
>>>
B. 怎么在java的flink中调用python程序
1. 在java类中直接执行python语句
此方法需要引用 org.python包,需要下载Jpython。在这里先介绍一下Jpython。下面引入网络的解释:
Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。
这里我建议下载最新版本的Jpython,因为可以使用的python函数库会比老版本的多些,目前最新版本为2.7。
下载jar包请点击Download Jython 2.7.0 - Standalone Jar
下载安装程序请点击Download Jython 2.7.0 - Installer
如果使用maven依赖添加的话,使用下面的语句
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7.0</version>
</dependency>
以上准备好了,就可以直接在java类中写python语句了,具体代码如下:
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("a=[5,2,3,9,4,0]; ");
interpreter.exec("print(sorted(a));"); //此处python语句是3.x版本的语法
interpreter.exec("print sorted(a);"); //此处是python语句是2.x版本的语法
输出结果如下:这里会看到输出的结果都是一样的,也就是说Jpython兼容python2.x和3.x版本的语句,运行速度会比直接运行python程序稍慢一点。
但是每次运行结果都会提示console: Failed to install ”: java.nio.charset.UnsupportedCharsetException: cp0. 这样看起来很烦,因为每次运行结果都会出现红色的提示语句,以为是错误,程序员应该都不愿意看到这一幕,得想个办法解决。
解决方法如下:
在要执行的代码上右键, Run As>Run Configurations,选择第二个页签Arguments,在VM arguments中添加以下语句
-Dpython.console.encoding=UTF-8
然后Apply->Run就可以了。
C. 如何配置java和python环境
Java 环境配置
1. 最简单的方法
众所周知,eclipse是需要java运行环境的,其实只需要java虚拟机
jre就行了,也就是说橘困缺在你的系统中如果已经安装了jre(一般在C:\Program Files
(x86)\Java\jre6),其实只需要这个jre文件夹到eclipse下就能顺利运行eclipse了,但是这样做之后eclipse会提示你什么环境变量没有设置,会影响啥啥的,这个我都没有管,以后需要再在意也行。
2. 标准的方法
首先从这里下载jdk (SE是指standard version)
jdk下载地址
配置环境变量
在“系统变量”区域,设置3项圆辩属性:JavaHome、PATH、CLASSPATH
JavaHome指明JDK的安装路径 "C:\Program Files\Java\jdk1.7.0_45"
PATH 是java和javac的目录 ".\;%JavaHome%\bin;\%JavaHome%\jre\bin"
classpath 是加载类的路径 ".\;%JavaHome%\lib\tools.jar;%JavaHome%\jre\lib\rt.jar"
Python插件配置
(1) 安装python插件
打开eclipse中help下的install new software,输入下面网址
http://pydev.org/updates/
选中Pydev安装,安装后eclipse会提醒重启
(2) 配置python解释器
先从官网下载python的安装包
python安装包
安装好python后
如果要在windows命令行下使用python,在系统高级设置中环境变量path中添加python的路径“C:\Python27”即可。这一步是很必要的,比如以后要安装python的第三方的库的时候需要在windows下运行setup.py要用到。
验证安装好的方法:
在command中运行:
python -version 应该能成功显示python的版本。
在eclipse中
打开windows->preferences下面配置python解释器的环境,配置好后如图。
然后就可以新建python的工程啦。
(3) python 第三方插件的安装 以及在Eclipse中的识别问题
以安装requests这个python的第三方插件为例尺袜
首先从github网站下载request python安装包
https://github.com/kennethreitz/requests
点击后面的zip包下载解压到本地任意一个地方,python的安装很简单,正常的安装包中都会有个setup.py这个文件,在terminal下运行:
python setup.py install
这里感叹一句,安装时它会自动寻找python的安装路径,无论是在C盘还是D盘(不过这也可能是因为我提前在系统变量path中配置了python的路径)。然后将需要的文件复制在E:\Python27\Lib\site-packages下。
接下来再次进入eclipse中,重新restore一下preferences下的解释器的路径(估计这一步也是没有必要的),然后重启eclipse,这样python interpreter就能正常识别你新导入的mole了。
D. python第三方库安装到哪里
将依赖包目录放置到*:\Python*\Lib\site-packages\中,即python的安装目录中。
首先确定API目录下是否有__init__.py文件,如果没有,请新建一个。
打开API主运行文件,查看里面的类名称。此处为main.py文件,类为class dcVerCode。
此处以导入main中的类dcVerCode为例。
打开__init__.py,输入:
from main import dcVerCode
这样就完成了依赖包的指定。
然后再在程序中导入该包即可,此处的依赖包名称为qqcr(即目录名称),所以输入:
import qqcr
即可完成包的导入。
E. 如何使用pycharm配合部署python的django框架
安装软件
安装 Python 2.7、PyCharm、pip(Python包管理工具)、Django ( pip install Django)
部署
PyCharm 新建Django工程
完成后,其目录如下:
子目录MyDjangoProject下表示工程的全局配置,分别为setttings.py、urls.py和wsgi.py,其中setttings.py包括了系统的数据库配置、应用配置和其他配置,urls.py则
表示web工程Url映射的配置。
子目录student则是在该工程下创建的app,包含了models.py、tests.py和views.py等文件
templates目录则为模板文件的目录
manage.py是Django提供的一个管理工具,可以同步数据库等等
启动
创建完成后,就可以正常启动了。点击Run 按钮,启动时报错了:
Traceback (most recent call last):
File "D:/workspace/MyDjangoProject/manage.py", line 10, in <mole>
execute_from_command_line(sys.argv)
File "D:\Python27\lib\site-packages\django\core\management\__init__.py", line 338, in execute_from_command_line
utility.execute()
File "D:\Python27\lib\site-packages\django\core\management\__init__.py", line 312, in execute
django.setup()
File "D:\Python27\lib\site-packages\django\__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "D:\Python27\lib\site-packages\django\apps\registry.py", line 89, in populate
"plicates: %s" % app_config.label)
django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, plicates: admin
应该是admin配置冲突了,打开setttings.py文件,发现admin配置重复了
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'student',
)
注释掉其中一行后(为什么会有这个问题,估计是个bug),重新启动,ok
web工程添加页面
此时,我们尚没有写一行代码,程序就ang跑起来了! 快添加一个Hello World的页面吧。
打开student/views.py文件,输入以下内容
def sayHello(request):
s = 'Hello World!'
current_time = datetime.datetime.now()
html = '<html><head></head><body><h1> %s </h1><p> %s </p></body></html>' % (s, current_time)
return HttpResponse(html)
打开url.py文件,需要进行url映射的配置:
url(r'^student/', sayHello)
当用户输入http://**/student 时,便会调用sayHello方法,该方法通过HttpResponse()将页面内容作为响应返回。
重启服务,访问http://localhost:8000/student/
在views.py页面可以将页面需要的元素通过字符串的形式,调用HttpResponse()类作为响应返回到浏览器。但这样,页面逻辑和页面混合在一起,手写起来很繁琐,工作量比较大。如果我们需要展示一些动态的数据,而页面基本不改变的情况下,该怎么做呢?
比如在用户访问 http://localhost:8000/student/ 时,我们想动态展示一些学生的数据。可以这样做:
首先在templates目录下,新建 student.html文件,该文件作为模板,内容如下:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<ul>
{% for student in students %}
<li>
id:{{ student.id }},姓名:{{ student.name }},age: {{ student.age }}
</li>
{% endfor %}
</ul>
</body>
</html>
修改 views.py文件,添加方法showStudents()
def showStudents(request):
list = [{id: 1, 'name': 'Jack'}, {id: 2, 'name': 'Rose'}]
return render_to_response('student.html',{'students': list})
该方法将list作为动态数据,通过render_to_response方法绑定到模板页面student.html上。
添加url映射,url(r'^showStudents/$', showStudents)
修改settings.py模板配置:'DIRS': [BASE_DIR+r'\templates'],
重启服务,访问http://localhost:8000/showStudents,出现:
至此,我们已可以正常将一些“动态”数据绑定到模板上了。但是怎么样访问数据库呢?
从数据库获取需要的数据,展示在页面上?
首先需要安装数据库驱动啦,即mysql_python,
接着配置数据库连接:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'student',
'USER': 'root',
'PASSWORD': '1234',
'HOST': '127.0.0.1',
'PORT': '3306',
#'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
配置完成之后,需要检测数据库配置是否正确,使用 manage.py shell命令,进入shell交互界面:
输入:
from django.db import connection
cursor = connection.cursor()
如果不报错,说明配置正确。
创建model,打开models.py,定义model如下:
class Student(models.Model)
id = models.BigIntegerField
name = models.CharField(max_length=20, default='a')
然后调用 manage.py syncdb
正常情况下,该步骤做完之后,model 会和数据库保持一致性。但是在测试中,命令执行成功后,却发现数据库并没有建立该表。
对于该种情况,做如下操作即可正常:
(1)注释掉models.py文件代码,执行 manage.py makemigerations student
【和manage.py migerate --fake】
(2)打开注释,执行【 manage.py makemigerations student和 】manage.py migerate命令
通过以上两步,便可正常操作了
views.py中添加方法:showRealStudents
def showRealStudents(request):
list = Student.objects.all()
return render_to_response('student.html', {'students': list})
urls.py添加映射 url(r'^showRealStudents/$', showRealStudents)
重启服务,打开连接:http://localhost:8000/showRealStudents
页面输出正常。
至此,使用Django,可以正常操作数据库,自定义模板,在页面展示数据了。
服务器
由于Django自带轻量级的server,因此默认使用该server,但实际生产中是不允许这么干的,生产环境中通常使用Apache Httpd Server结合mod_wsgi.so来做后端服务器。
以下部署环境为:Python2.7.6
1、安装httpd-2.2.25-win32-x86-no_ssl.msi
2、将下载好的mod_wsgi.so 放在 D:\Program Files\Apache Software Foundation\Apache2.2\moles 模块下。
3、在新建的web工程 MyDjangoProject目录下新建 django.wsgi文件
内容如下(相应的目录需要修改):
import os
import sys
djangopath = "D:/Python27/Lib/site-packages/django/bin"
if djangopath not in sys.path:
sys.path.append(djangopath)
projectpath = 'D:/workspace/MyDjangoProject'
if projectpath not in sys.path:
sys.path.append(projectpath)
apppath = 'D:/workspace/MyDjangoProject/MyDjangoProject'
if apppath not in sys.path:
sys.path.append(apppath)
os.environ['DJANGO_SETTINGS_MODULE']='MyDjangoProject.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
4、修改httpd.conf ,添加如下:
LoadMole wsgi_mole moles/mod_wsgi.so
WSGIScriptAlias / "D:/workspace/MyDjangoProject/django.wsgi"
<Directory "D:/workspace/MyDjangoProject/">
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
ok,重启server,页面正常了。
在部署的过程中,遇到一个异常,如下:
The translation infrastructure cannot be initialized before the apps registry is ready
原因是django.wsgi一开始按照较为古老的写法,改为新版本的写法就Ok了。
F. python语言的33个保留字
文末有例子链接
1 false
#布尔类型的值,表示假,与true对应
2 class
#定义类的关键字
3 finally
#异常处理使用的关键字,用它可以指定始终执行的代码,指定代码在finally里面
4 is
#Python中的对象包含三个要素:id,type,value
5 return
#python 函数返回值 return,函数中一定要有return返回值才是完整的函数。如果你没有python定义函数返回值,那么会得到一个结果是None对象,而None表示没有任何值。
6 none
#None是一个特殊的常量,None和False不同,None不是0。None不是空字符串。None和任何其他数据类型比较永远返回False。None有自己的数据类型NoneType。我们可以将None复制给任何变量,但是不能创建其他NoneType对象。
7 continue
#continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
8 for
#for循环可以遍历任何序列的项目,如一个列表或者一个字符串
9 lambda
#匿名函数是个很时髦的概念,提升了代码的简洁程度。
10 try
#程序员可以使用try…except语句来处理异常。把通常的语句块放在try块中,而把错误处理的语句放在except块中
11 true
#布尔类型的值,表示真,与false相反。
12 def
#定义函数用的
13 from
#在python用import或者from…import来导入相应的模块。
14 nonlocal
#nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。
15 while
#while语句重复执行一块语句。while是循环语句的一种,while语句有一个可选的else从句
16 and
#逻辑判断语句,and左右两边都为真,则判断结果为真,否则都是假
17 del
#del用于list列表操作,删除一个或者连续几个元素。
18 global
#定义全局标量。
19 not
#逻辑判断,取反的意思
20 with
#with是python2.5以后有的,它实质是一个控制流语句,with可以用来简化try…finally语句,它的主要用法是实现一个类_enter_()和_exit_()方法。
21 as
#结合with使用。
22 elif
#和if配合使用的
23 if
#if语句用来检验一个条件,如果条件为真,我们运行一块语句(称为if…块),否则我们处理另外一块语句(称为else…块)。else从句是可选的。
24 or
#逻辑判断,or两边有一个为真,判断结果就是真。
25 yield
#yield用起来像return,yield在告诉程序,要求函数返回一个生成器
26 assert
#断言,用来在运行中检查程序的正确性,和其他语言一样的作用。
27 else
#与if配合使用
28 import
#在Python用import或者from…import来导入相应的模块。
29 pass
#pass的意思是什么都不要做,作用是为了弥补语法和空定义上的冲突,它的好处体现在代码的编写过程之中,比如你可以先写好软件的整个框架,然后再填好框架内具体函数和class的内容,如果没有pass编译器会报一堆的错误,让整个开发很不流畅。
30 break
#break语句是用来终止循环语句的,即使哪怕循环条件没有称为false或者序列还没有被完全递归,也会停止循环语句。提示,如果break的是for或while循环,任何对应的循环else块将不执行。
31 except
#使用try和except语句来铺货异常。
32 in
#for…in是另外一个循环语句,它在一序列的对象上递归即逐一使用队列中的每个项目。
33 raise
#raise抛出异常。
这里有例子—》python33个保留字的汇总
G. Python方法对象的理解与运用
9.3.4. 方法对象
通常,方法通过右绑定方式调用:
x.f()
在 MyClass 示例中,这会返回字符串 'hello world'。然而,也不是一定要直接调用方法。 x.f 是一个方法对象,它可以存储起来以后调用。例如:
xf = x.f
while True:
print(xf())
会不断的打印 hello world。
调用方法时发生了什么?你可能注意到调用 x.f() 时没有引用前面标出的变量,尽管在 f() 的函数定义中指明了一个参数。这个参数怎么了?事实上如果函数调用中缺少参数,Python 会抛出异常--甚至这个参数实际上没什么用……
实际上,你可能已经猜到了答案:方法的特别之处在于实例对象作为函数的第一个参数传给了函数。在我们的例子中,调用 x.f() 相当于 MyClass.f(x) 。通常,以 n 个参数的列表去调用一个方法就相当于将方法的对象插入到参数列表的最前面后,以这个列表去调用相应的函数。
如果你还是不理解方法的工作原理,了解一下它的实现也许有帮助。引用非数据属性的实例属性时,会搜索它的类。如果这个命名确认为一个有效的函数对象类属性,就会将实例对象和函数对象封装进一个抽象对象:这就是方法对象。以一个参数列表调用方法对象时,它被重新拆封,用实例对象和原始的参数列表构造一个新的参数列表,然后函数对象调用这个新的参数列表。
H. 如何用python的字典和列表来实现学生成绩管理
下面是一个使用 Python 的字典和列表来实现学生成绩管理的简单例子。此例子实现了所有要求,但没有使用定义学生结构体类型和数组:
# 定义学生数据字典
students = []
# 定义输入函数
def input_student():
while True:
student = {}
student['id'] = input('学号: ')
student['class'] = input('班级: ')
student['name'] = input('姓名: ')
student['scores'] = []
for i in range(3):
score = input('第%d门课程成绩: ' % (i + 1))
student['scores'].append(score)
students.append(student)
if input('是否穗让瞎继续输入(y/n): ') != 'y':
break
# 定义求平均分函数
def average_score():
for student in students:
total = 0
for score in student['scores']:
total += score
student['average'] = total / len(student['scores'])
# 定义求最高平均分函数
def max_average():
max_student = None
max_average = 0
for student in students:
if student['average'] > max_average:
max_student = student
max_average = student['average']
return max_student
# 调用输入函数
input_student()
# 调用求平均分函数
average_score()
# 输出每个学生的3门课程平均分
for student in students:
print('学号: %s, 班级: %s, 姓名: %s, 平均分: %.2f' % (student['id'], student['class'], student['name'], student['average']))
# 调用求最高平均分函数
max_student = max_average()
# 输出最高平均分的学生信息
if max_student:
print(' 平均分猜空最高的学生: 学号: %s, 班级: %s, 姓名: %s, 3门课程成绩: %s, 平均分: %.2f' % (max_student['id'], max_student['class'], max_student['name'], max_student['scores'], max_student['average']))
在上面的例子中,我们定义了一个学生数据字典,用于存储学生信息。然后定义了三个函数,分别用于输入学生信息滑烂、求每个学生3门课程的平均分和求平均分最高的学生。最后,在主函数中调用这三个函数,并输出结果。