一、#!usr/bin/env python

  脚本语言的第一行,指定执行脚本的解释器。

  #!/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;

  #!/usr/bin/env python 这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作。
    
  其语法规则是:

  1、必须是文件的第一行

  2、必须以#!开头

  3、/path/to/script/interpreter是脚本解释器的全路径名。

 例如:
#!/bin/sh shell脚本
#!/usr/bin/perl perl脚本
#!/usr/bin/python python脚本
#!/usr/bin/python3 python3脚本
#!/usr/bin/python2 python2脚本 另外,在指定解释器后,可以用#!coding = usf-8 来指定编码格式,这样在py文件中就可以写入中文注释或字符串。

二、__file__, __name__, __doc__属性

  1、__file__

  用来获得模块所在路径,得到的可能是相对路径或绝对路径。

  为了得到绝对路径,可以通过os.path.realpath(__file__)

  但是,在Python控制台下,直接使用print __file__是会导致  name ‘__file__’ is not defined错误的,因为这时没有在任何一个脚本下执行,自然没有 __file__的定义了。不过,在wing下的python shell中print __file__ ,会得到_sandbox.py的路径。如下图所示:

  

    

  sys.argv[0]是获取文件路径的另一种方式。

 import os, sys
dirname, filename = os.path.split(os.path.abspath(sys.argv[0]))
print "running from", dirname
print "file is", filename

  不过,__file__与sys.argv[0]的区别在于:当一个文件访问另一个文件时,__file__显示的路径不同,sys.argv[0]显示的路径相同。表述的不是很清楚,见例子:

 #f:\Python\Wing\Pygame\Bunny and Badgers\test.py
import sys, os
print "test: sys.argv[0] is", repr(sys.argv[0])
print "test: __file__ is", repr(__file__)
print "test: cwd is", repr(os.getcwd())
import pathutils
pathutils.show_path() #D:\Program Files\Python27\pathutils.py
import os, sys
def show_path():
print "show_path: sys.argv[0] is", repr(sys.argv[0])
print "show_path: __file__ is", repr(__file__)
print "show_path: cwd is", repr(os.getcwd()) #the output
test: sys.argv[0] is 'f:\\Python\\Wing\\Pygame\\Bunny and Badgers\\test.py'
test: __file__ is 'f:\\Python\\Wing\\Pygame\\Bunny and Badgers\\test.py'
test: cwd is 'f:\\Python\\Wing\\Pygame\\Bunny and Badgers'
show_path: sys.argv[0] is 'f:\\Python\\Wing\\Pygame\\Bunny and Badgers\\test.py'
show_path: __file__ is 'D:\\Program Files\\Python27\\pathutils.py'
show_path: cwd is 'f:\\Python\\Wing\\Pygame\\Bunny and Badgers'

  2、__name__

  用于判断当前模块是不是程序入口,如果当前程序正在使用,__name__的值为__main__。在编写程序时,通常需要给每个模块添加条件语句,用于单独测试该模块的功能。

  3、__doc__

  每个对象都有一个__doc__属性。

 class Person:
'''print __doc__ will be displaied ....
hahah
heheh
'''
def __init__(self, name, age):
self.name = name
self.age = age
bob = Person('bob', 18)
print Person.__doc__
print bob.__doc__ '''
print __doc__ will be displaied ....
hahah
heheh print __doc__ will be displaied ....
hahah
heheh
'''

三、隐含参数*args,**kwargs

  直接用代码体现吧  

 def foo(*args,**kwargs):
print 'args=',args
print 'kwargs=',kwargs
print '**********************'
#if __name__=='__main__':
foo(1,2,3)
foo(a=1,b=2,c=3)
foo(1,2,3,a=1,b=2,c=3)
foo(1,'b','c',a=1,b='b',c='c') def foo2(**kwargs):
for item in kwargs.items():
print item,
my_dict = {'name': 'yy', 'age': 18}
foo2(**my_dict) # '**' is must added

四、yield

  感觉yield是python特有的一个特性吧,用在生成器函数中。在python documention中有这样的描述,The yield expression is only used when defining a generator function, and can only be used in the body of a function definition. Using a yield expression in a function definition is sufficient to cause that definition to create a generator function instead of a normal function.

  而且,官方给出的例子很好的说明了yield的用法。

 def echo(value=None):
print "Excution starts when 'next()' is called for the first time"
try:
while True:
try:
value = (yield value)
except Exception, e:
value = e
finally:
print "Don't forget to clean up when 'close() is called.'" generator = echo(1)
print type(generator)
print generator.next()
print generator.next()
print generator.send(2)
print generator.throw(TypeError, "spam")
print generator.send("Does this work?")
generator.close()
 def myReadlines():
seek = 0
while True:
with open('C:\Users\Administrator\Desktop\interface.txt', 'r' ) as f:
f.seek(seek)
data = f.readline()
if data:
yield data
seek = f.tell()
else:
return for item in myReadlines():
print item

五、lambda表达式

  lambda表达式相当于一个没有函数名的函数。当函数功能较简单,而不想声明一个函数时,可以用lambda表达式代替。上代码吧。

 #example1
value = lambda x, y:x > y
print value(4, 6) #example2
map( lambda x: x*x, [y for y in range(10)] )

六、反射

  简单的说,就是以字符创的形式导入模块。__import__, getattr().

  第一次写博客,感觉挺好,以后就以这样的形式督促自己学习。反射机制下次再总结了,回去跑步。

  2016-03-26  21:07:00

												

Python基础1:一些小知识汇总的更多相关文章

  1. python之数字类型小知识

    数字是表示计数的抽象事物,也是数学运算和推理的基础,所以,生活中数字是生活中无处不在的,那么,在python语言中运用数字有哪些小知识呢,不妨花点时间看一下这篇博文,牢记这些小知识. 整数类型中四种进 ...

  2. python中的一些小知识

    在最近学习python中遇到的一些小问题汇总一下: 1.在windows7下安装python3.5版本时提示安装不了,缺少ServicePack1.  解决办法是,打开控制面板\系统和安全\Windo ...

  3. Python 基础:入门必备知识

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:程序员野客 先看下咱们的基础目录1 标识符2 关键字3 引号4 编码5 ...

  4. 【python基础】 Tkinter小构件之canvas 画布

    [python之tkinter画布] 要画布就要使用tkinter的小构件,canvas(结构化的图形,用于绘制图形,创建图形编辑器以及实现自定制的小构件类) 我们先使用create_rectangl ...

  5. C语言中重要的小知识汇总

    用于整理记录一些C语言下的小知识点: 1. 在C语言中,怎么查看一个数据类型占用了多少个字节大小呢? 可以使用sizeof(int)/sizeof(double)等来查看某数据类型到底用了几个字节: ...

  6. Python时间获取及转换知识汇总

    时间处理是我们日常开发中最最常见的需求,例如:获取当前datetime.获取当天date.获取明天/前N天.获取当天开始和结束时间(00:00:00 23:59:59).获取两个datetime的时间 ...

  7. python基础17 ---继承补充知识

    一.继承的顺序 1.在python中的类可以集成多个类,既然是继承多个类就有类的寻找顺序这么一说.其寻找方法就有广度优先和深度优先两种. 2.当类是新式类,多继承的情况下会按照广度优先的顺序查找. 如 ...

  8. python基础4(小数据池,编码,深浅拷贝)

    1.==与is == 比较值是否相等 is比较内存地址是否相同 2.小数据池 为了节省内存,当数据在一个范围里的时候,两个值相同的变量指向的是小数据池里的同一个地址 数字范围:-5 ~ 256 num ...

  9. linux系统基础优化16条知识汇总

    优化的总结: 1.不用root管理,以普通用户的名义通过sudo授权管理. 2.更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至 要更改只监听内网IP. 3.定时自动更新服务区时间,使 ...

随机推荐

  1. System.Reflection.Emit学习

    C#反射发出System.Reflection.Emit学习 分享: 1 一.System.Reflection.Emit概述 Emit,可以称为发出或者产生.与Emit相关的类基本都存在于Syste ...

  2. Splunk

    http://www.huxiu.com/article/33724/1.html http://www.netis.com.cn/splunk/%E4%BB%80%E4%B9%88%E6%98%AF ...

  3. python的str,unicode对象的encode和decode方法

    python的str,unicode对象的encode和decode方法 python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byt ...

  4. Flex控件初始化问题

    有个对话框mx:TitleWindow->mx:TabNavigator->里有两个mx:Tile,每个Tile里都有个datagrid.测试如下:1.对话框显示后,马上动态监测第二个ti ...

  5. python(进程池/线程池)

    进程池 import multiprocessing import time def do_calculation(data): print(multiprocessing.current_proce ...

  6. 初次接触VC++载入自己定义LIB 即静态链接

    分为两部分 第一部分  LIBproject 用来生成LIB文件 #ifndef _myfun #define _myfun int myfun(int x,int y) { return x+y; ...

  7. USB设备在连接PC时的reset从何而来?

    近期在做烧写工具的优化工作,有一些关于USB的内容须要总结一下当中包含设备的初始化过程和枚举过程. 在枚举的过程中,设备会一直等PC端的状态,当等到reset命令时会对设备进行又一次枚举.可是这个re ...

  8. xampp中mysql设置密码

    发现网上的解决办法都比较过时.嗯,解决办法很简单. 打开浏览器localhost:[port]/phpmyadmin/ 点击用户账户选项 选择用户名为root,Host name为localhost也 ...

  9. 在SQL 中生成JSON数据

    这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定: 1.以模块为单位分表.列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数 ...

  10. [Asp.net]常见word,excel,ppt,pdf在线预览方案(转)

    引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...