pythonthen
❶ 如何在python中获取完整的异颜桓
我们可以很容易的通过Python解释器获取帮助。如果想知道一个对象(object)更多的信息,那么可以调用help(object)!另外还有一些有用的方法,dir(object)会显示该对象的大部分相关属性名,还有object._doc_会显示其相对应的文档字符串。下面对其进行逐一介绍。
1、 help()
help函数是Python的一个内置函数。
函数原型:help([object])。
可以帮助我们了解该对象的更多信息。
Ifno argument is given, the interactive help system starts on the interpreter console.
>>> help()
Welcome to Python 2.7! This is the online help utility.
If this is your first time using Python, you should definitely check out
the tutorial on the Internet at .
Enter the name of any mole, keyword, or topic to get help on writing
Python programs and using Python moles. To quit this help utility andreturn to the interpreter, just type "quit".
To get a list of available moles, keywords, or topics, type "moles","keywords", or "topics". Each mole also comes with a one-line summary
of what it does; to list the moles whose summaries contain a given word
such as "spam", type "moles spam".
help> int # 由于篇幅问题,此处只显示部分内容,下同Help on class int in mole __builtin__:class int(object)
| int(x=0) -> int or long
| int(x, base=10) -> int or long
|
.....help>
Ifthe argument is a string, then the string is looked up as the name of amole,function,class,method,keyword, ordocumentation topic, and a help page is printed on the console. If the argument is any other kind of object, a help page on the object is generated.
>>> help(abs) # 查看abs函数Help on built-in function abs in mole __builtin__:
abs(...)
abs(number) -> number
Return the absolute value of the argument.>>> help(math) # 查看math模块,此处只显示部分内容Help on built-in mole math:
NAME
math
FILE
(built-in)
DESCRIPTION
This mole is always available. It provides access to the
mathematical functions defined by the C standard.
FUNCTIONS
acos(...)
acos(x)
Return the arc cosine (measured in radians) of x.
.....>>> 293031
2、dir()
dir函数是Python的一个内置函数。
函数原型:dir([object])
可以帮助我们获取该对象的大部分相关属性。
Without arguments, return the list of names in the current local scope.
>>> dir() # 没有参数['__builtins__', '__doc__', '__name__', '__package__']>>> >>> import math # 引入一个包和一个变量,再次dir()>>> a=3>>> >>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'a', 'math']>>> 12345678910
With an argument, attempt to return a list of valid attributes for that object.
>>> import math>>> dir(math) # math模块作为参数['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'sign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']>>> 12345
The default dir() mechanism behaves differently with different types of objects, as it attempts to proce the most relevant, rather than complete, information:
• If the object is a mole object, the list contains the names of the mole’s attributes.
>>> import math>>> dir(math) # math模块作为参数['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'sign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']>>> 12345
• If the object is a type or class object, the list contains the names of its attributes, and recursively of the attributes of its bases.
>>> dir(float) # 类型['__abs__', '__add__', '__class__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getformat__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__int__', '__le__', '__long__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__nonzero__', '__pos__', '__pow__', '__radd__', '__rdiv__', '__rdivmod__', '__rece__', '__rece_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__setformat__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real']>>> dir(3.4)
['__abs__', '__add__', '__class__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getformat__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__int__', '__le__', '__long__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__nonzero__', '__pos__', '__pow__', '__radd__', '__rdiv__', '__rdivmod__', '__rece__', '__rece_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__setformat__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real']>>> >>> class A:
x=3
y=4>>> class B(A):
z=5>>> dir(B) # 类['__doc__', '__mole__', 'x', 'y', 'z']>>> 123456789101112131415161718
• Otherwise, the list contains the object’s attributes’ names, the names of its class’s attributes, and recursively of the attributes of its class’s base classes.
3、_doc_
在Python中有一个奇妙的特性,文档字符串,又称为DocStrings。
用它可以为我们的模块、类、函数等添加说明性的文字,使程序易读易懂,更重要的是可以通过Python自带的标准方法将这些描述性文字信息输出。
上面提到的自带的标准方法就是_doc_。前后各两个下划线。
注:当不是函数、方法、模块等调用doc时,而是具体对象调用时,会显示此对象从属的类型的构造函数的文档字符串。
>>> import math>>> math.__doc__ # 模块'This mole is always available. It provides access to the
mathematical functions defined by the C standard.'>>> abs.__doc__ # 内置函数'abs(number) -> number
Return the absolute value of the argument.'>>> def addxy(x,y):
'''the sum of x and y'''
return x+y>>> addxy.__doc__ # 自定义函数'the sum of x and y'>>> a=[1,2,4]>>> a.count.__doc__ # 方法'L.count(value) -> integer -- return number of occurrences of value'>>> b=3>>> b.__doc__ # 具体的对象"int(x=0) -> int or long
int(x, base=10) -> int or long
Convert a number or string to an integer, or return 0 if no arguments
are given. If x is floating point, the conversion truncates towards zero.
If x is outside the integer range, the function returns a long instead.
If x is not a number or if base is given, then x must be a string or
Unicode object representing an integer literal in the given base. The
literal can be preceded by '+' or '-' and be surrounded by whitespace.
The base defaults to 10. Valid bases are 0 and 2-36. Base 0 means to
interpret the base from the string as an integer literal.
>>> int('0b100', base=0)
4">>> 12345678910111213141516171819
其实我们可以通过一定的手段来查看这些文档字符串,比如使用Pycharm,在对应的模块、函数、方法等上鼠标“右击”->Go to->Declaration。例如:查看内置函数abs的文档字符串
参考文献:
1、Python帮助文档
❷ 怎么知道一个Python程序是否正常退出
与其他程序同样判断。
Windows:
python.exeapp.py
if%errorlevel%==0(echosuccess)else(echofailed)
Linux(在命令中运行):
ifpythonapp.py;thenechosuccess;elseechofailed;fi
Linux(上一个命令运行):
pythonapp.py
if[["$?"=="0"]];thenechosuccess;elseechofailed;fi
Python(Popen子进程方式运行):
importsys
fromsubprocessimportPopen
args=sys.executable,'app.py'
p=Popen(args)
p.wait()
ifp.poll()==0:
print('success')
else:
print('failed')
Python(exec方式)
#由于python3没有execfile函数,这里采用exec的方式
importsys
withopen('app.py','rb')asf:
code=f.read().decode()
try:
ifsys.version_info.major==2:
execcode
else:
exec(code)
except:
print('failed')
else:
print('success')
❸ Python编程的一个作业
simple...
谁可以帮帮我,第一次注册知道,没什么分, 但一定会去赚分追加给最好的答案
我就不信你还去赚分来给我~~O(∩_∩)O
def cycle(a,i = 0):
____i += 1
____if a == 1:
________return i
____if a % 2 == 1:
________return cycle(a*3 + 1,i)
____else:
________return cycle(a/2,i)
def myprint(a,b):
____starstr = ""
____for i in range(b):
________starstr += "*"
____mystr = str(a) + ":" + starstr
____print mystr
def main():
____i = input("Please Enter a Value for i:")
____j = input("Please Enter a Value for j:")
____for t in range(i,j+1):
________myprint(t,cycle(t))
main()
❹ 关于python的几个小编程 急!
注意:只能在脚本下运行,要直接在IDE下运行需要做修改。
#Q1
text=raw_input("Type in a line of text:")
punctuation = ['(', ')', '?', ':', ';', ',', '.', '!', '/', '"', "'"]
convers_to_list=list(text) #将字符串转换成list类型
new_list=[] #存放去掉标点符号后的字符
def move_pun():
for i in convers_to_list:
if i not in punctuation: #不在punctuation中的字符
new_list.append(i) #放进new_list中
new_string=''.join(new_list) #转换成string
print convers_to_list
print new_string
#运行
move_pun()
________________________________
#Q2
string=raw_input("Enter a string:")
length=len(string)
list_of_string=list(string) #将输入的字符串转换成列表,以便前后比较
def palindrome():
if length==1: #如果输入只有一个字符,也把它当做回文
print "Palindrome? True"
return
for i in range(length/2):
if list_of_string[i]!=list_of_string[length-1-i]: #前后对比,如果不相同就不是回文,退出
print "Palindrome? False"
return
else:
if i==length/2-1: #直到比较到字符串的中间位置前后都相同,可以判断是回文
print "Palindrome? True"
#运行
palindrome()
————————————————————————
#Q3
sentence=raw_input("Type in a sentence:")
punctuation = ['(', ')', '?', ':', ';', ',', '.', '!', '/', '"', "'",' ']
convers_to_list=list(sentence)
sentence_no_pun=[]
#将输入经过第一、第二个程序的处理即可
def sentence_palindrome():
for i in convers_to_list:
if i not in punctuation:
sentence_no_pun.append(i)
print_sentence=''.join(sentence_no_pun).lower() #把list转换成string再全部转换成小写
length=len(print_sentence)
print print_sentence
if length==1:
print "Palindrome? True"
return
for i in range(length/2):
if print_sentence[i]!=print_sentence[length-1-i]:
print "Palindrome? False"
return
else:
if i==length/2-1:
print "Palindrome? True"
#运行
sentence_palindrome()
❺ 为什么python虚拟环境启动后依然使用全局的python和pip
你可以看看 venv/bin/activate 文件
一般是和环境变量有关系 PYTHONPATH 或者 是 PATH 有关系
还有一种可能性是你创建虚拟环境的时候指定了某些参数,使用原有的 python
# This file must be used with "source bin/activate" *from bash*# you cannot run it directlydeactivate () { unset pydoc # reset old environment variables
if [ -n "${_OLD_VIRTUAL_PATH-}" ] ; then
PATH="$_OLD_VIRTUAL_PATH"
export PATH unset _OLD_VIRTUAL_PATH fi
if [ -n "${_OLD_VIRTUAL_PYTHONHOME-}" ] ; then
PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
export PYTHONHOME unset _OLD_VIRTUAL_PYTHONHOME fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH-}" -o -n "${ZSH_VERSION-}" ] ; then
hash -r 2>/dev/null fi
if [ -n "${_OLD_VIRTUAL_PS1-}" ] ; then
PS1="$_OLD_VIRTUAL_PS1"
export PS1 unset _OLD_VIRTUAL_PS1 fi
unset VIRTUAL_ENV if [ ! "${1-}" = "nondestructive" ] ; then
# Self destruct!
unset -f deactivate fi}# unset irrelevant variablesdeactivate nondestructive
VIRTUAL_ENV="/Users/caimaoy/test/test/auto_monitor/monitor"export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"PATH="$VIRTUAL_ENV/bin:$PATH"export PATH# unset PYTHONHOME if set# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)# could use `if (set -u; : $PYTHONHOME) ;` in bashif [ -n "${PYTHONHOME-}" ] ; then
_OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
unset PYTHONHOMEfiif [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
_OLD_VIRTUAL_PS1="$PS1"
if [ "x" != x ] ; then
PS1="$PS1"
else
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
else
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
fi
export PS1fialias pydoc="python -m pydoc"# This should detect bash and zsh, which have a hash command that must# be called to get it to forget past commands. Without forgetting# past commands the $PATH changes we made may not be respectedif [ -n "${BASH-}" -o -n "${ZSH_VERSION-}" ] ; then
hash -r 2>/dev/nullfi
❻ Python怎样使用解释器
大学里计算机科学最吸引我的地方就是编译器。最神奇的是,编译器是如何读出我写的那些烂代码,并且还能生成那么复杂的程序。当我终于选了一门编译方面的课程时,我发现这个过程比我想的要简单得多。
在本系列的文章中,我会试着通过为一种基本命令语言IMP写一个解释器,来展示这种简易性。因为IMP是一个简单广为人知的语言,所以打算用 Python写这个解释器。Python代码看起来很像伪代码,所以即使你不认识 Python,你也能理解它。解析可以通过一套从头开始实现的解析器组合完成(在本系列的下一篇文章中会有解释)。除了sys(用于I/O)、re(用于解析正则表达式)以及unittest(用于确保一切工作正常)库,没有使用其他额外的库。
IMP 语言
在开始写之前,我们先来讨论一下将要解释的语言。IMP是拥有下面结构的最小命令语言:
赋值语句(所有变量都是全局的,而且只能存储整数):
Python
1
x := 1
条件语句:
Python
1
2
3
4
5
if x = 1 then
y := 2
else
y := 3
end
while循环:
Python
1
2
3
while x < 10 do
x := x + 1
end
复合语句(分号分隔):
Python
1
2
x := 1;
y := 2
OK,所以它只是一门工具语言,但你可以很容易就把它扩展成比Lua或python更有用的语言。我希望能把这份教程能保持尽量简单。
下面这个例子是计算阶乘的程序:
Python
1
2
3
4
5
6
n := 5;
p := 1;
while n > 0 do
p := p * n;
n := n - 1
end
IMP没有读取输入的方式,所以初始状态必须是在程序最开始写一系列的赋值语句。也没有打印结果的方式,所以解释器必须在程序的结尾打印所有变量的值。
解释器的结构
解释器的核心是“中间表示”(Intermediate representation,IR)。这就是如何在内存中表示IMP程序。因为IMP是一个很简单的语言,中间表示将直接对应于语言的语法;每一种表达和语句都有对应的类。在一种更复杂的语言中,你不仅需要一个“语法表示”,还需要一个更容易分析或运行的“语义表示”。
解释器将会执行三个阶段:
将源码中的字符分割成标记符(token)
将标记符组织成一棵抽象语法树(AST)。抽象语法树就是中间表示。
评估这棵抽象语法树,并在最后打印这棵树的状态
将字符串分割成标记符的过程叫做“词法分析”,通过一个词法分析器完成。关键字是很短,易于理解的字符串,包含程序中最基本的部分,如数字、标识符、关键字和操作符。词法分析器会除去空格和注释,因为它们都会被解释器忽略。
实际执行这个解析过的抽象语法树的过程称为评估。这实际上是这个解析器中最简单的部分了。
本文会把重点放在词法分析器上。我们将编写一个通用的词汇库,然后用它来为IMP创建一个词法分析器。下一篇文章将会重点打造一个语法分析器和评估计算器。
词汇库
词法分析器的操作相当简单。它是基于正则表达式的,所以如果你不熟悉它们,你可能需要读一些资料。简单来说,正则表达式就是一种能描述其他字符串的特殊的格式化的字符串。你可以使用它们去匹配电话号码或是邮箱地址,或者是像我们遇到在这种情况,不同类型的标记符。
词法分析器的输入可能只是一个字符串。简单起见,我们将整个输入文件都读到内存中。输出是一个标记符列表。每个标记符包括一个值(它代表的字符串)和一个标记(表示它是一个什么类型的标记符)。语法分析器会使用这两个数据来决定如何构建一棵抽象语法树。
由于不论何种语言的词法分析器,其操作都大同小异,我们将创建一个通用的词法分析器,包括一个正则表达式列表和对应的标签(tag)。对每一个表达式,它都会检查是否和当前位置的输入文本匹配。如果匹配,匹配文本就会作为一个标记符被提取出来,并且被加上该正则表达式的标签。如果该正则表达式没有标签,那么这段文本将会被丢弃。这样免得我们被诸如注释和空格之类的垃圾字符干扰。如果没有匹配的正则表达式,程序就要报错并终止。这个过程会不断循环直到没有字符可匹配。
下面是一段来自词汇库的代码:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys
import re
def lex(characters, token_exprs):
pos = 0
tokens = []
while pos < len(characters):
match = None
for token_expr in token_exprs:
pattern, tag = token_expr
regex = re.compile(pattern)
match = regex.match(characters, pos)
if match:
text = match.group(0)
if tag:
token = (text, tag)
tokens.append(token)
break
if not match:
sys.stderr.write('Illegal character: %sn' % characters[pos])
sys.exit(1)
else:
pos = match.end(0)
return tokens
注意,我们遍历正则表达式的顺序很重要。lex会遍历所有的表达式,然后接受第一个匹配成功的表达式。这也就意味着,当使用词法分析器时,我们应当首先考虑最具体的表达式(像那些匹配算子(matching operator)和关键词),其次才是比较一般的表达式(像标识符和数字)。
词法分析器
给定上面的lex函数,为IMP定义一个词法分析器就非常简单了。首先我们要做的就是为标记符定义一系列的标签。IMP只需要三个标签。RESERVED表示一个保留字或操作符。INT表示一个文字整数。ID代表标识符。
Python
1
2
3
4
5
import lexer
RESERVED = 'RESERVED'
INT= 'INT'
ID = 'ID'
接下来定义词法分析器将会用到的标记符表达式。前两个表达式匹配空格和注释。它们没有标签,所以 lex 会丢弃它们匹配到的所有字符。
Python
1
2
3
token_exprs = [
(r'[ nt]+',None),
(r'#[^n]*', None),
然后,只剩下所有的操作符和保留字了。记住,每个正则表达式前面的“r”表示这个字符串是“raw”;Python不会处理任何转义字符。这使我们可以在字符串中包含进反斜线,正则表达式正是利用这一点来转义操作符比如“+”和“*”。
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(r':=', RESERVED),
(r'(',RESERVED),
(r')',RESERVED),
(r';', RESERVED),
(r'+',RESERVED),
(r'-', RESERVED),
(r'*',RESERVED),
(r'/', RESERVED),
(r'<=',RESERVED),
(r'<', RESERVED),
(r'>=',RESERVED),
(r'>', RESERVED),
(r'=', RESERVED),
(r'!=',RESERVED),
(r'and', RESERVED),
(r'or',RESERVED),
(r'not', RESERVED),
(r'if',RESERVED),
(r'then',RESERVED),
(r'else',RESERVED),
(r'while', RESERVED),
(r'do',RESERVED),
(r'end', RESERVED),
最后,轮到整数和标识符的表达式。要注意的是,标识符的正则表达式会匹配上面的所有的保留字,所以它一定要留到最后。
Python
1
2
3
(r'[0-9]+',INT),
(r'[A-Za-z][A-Za-z0-9_]*', ID),
]
既然正则表达式已经定义好了,我们还需要创建一个实际的lexer函数。
Python
1
2
def imp_lex(characters):
return lexer.lex(characters, token_exprs)
如果你对这部分感兴趣,这里有一些驱动代码可以测试输出:
Python
1
2
3
4
5
6
7
8
9
10
11
import sys
from imp_lexer import *
if __name__ == '__main__':
filename = sys.argv[1]
file = open(filename)
characters = file.read()
file.close()
tokens = imp_lex(characters)
for token in tokens:
print token
继续……
在本系列的下一篇文章中,我会讨论解析器组合,然后描述如何使用他们从lexer中生成的标记符列表建立抽象语法树。
如果你对于实现IMP解释器很感兴趣,你可以从这里下载全部的源码。
在源码包含的示例文件中运行解释器:
Python
1
python imp.py hello.imp
运行单元测试:
Python
1
python test.py
❼ python 有没有类似EXCEL中ifthen的函数
if a=True :
return ...
else :
return ...
这样不行么?
❽ python if 语句如何书写
第三行前面应该也有三个点,怎么没有了,第二行结束后按的是回车么。还有对于python的子句和嵌套关系都是又空格来确定的,在命令行运行尽量用tab键。
如果某个子句没有内容,那么也不能是空的,也就是冒号:包含的块即使没有东西,也得写一个pass,如果想结束子块,在命令行下,要按两行enter。
或者
if <条件> then <语句> ;
注意:Pascal中也有if 的嵌套,但else只承接最后一个没有承接的if,如:
if <条件1> then if <条件2> then <语句1> else <语句2>; 此处<语句2>当且仅当<条件1>成立且<条件2>不成立时运行。
if <条件1> then begin if <条件2> then <语句1> end else <语句2>; 此处<语句2>只要<条件1>成立就运行。
❾ 关于python中NLTK的安装
这应是你英文太差,才看不懂的。
我给你简单翻译一行吧。如果你还不行,建议你还是换个中文的文档看吧。
Start>Run c:\Python27\Scripts\easy_install pip
点“开始”--“运行” 输入c:\Python27\Scripts\easy_install pip
----你的python要装在c:\Python27目录中。