python入门笔记

来源:互联网 发布:小狐狸 for mac 编辑:程序博客网 时间:2024/06/04 00:46

这是我第一次写博客,没想到我的第一次就给了python,也是因为最近深度学习的兴起, 让python语言好好的火了一把。由于之前在学习tensorflow,特别是对于官方给出的数据处理之类的代码,比如:input_data.py 看的不是太懂,虽说是入门级的代码,但毕竟是谷歌那些有丰富经验的工程师写的,对于没有python经验的我来说,还是蛮痛苦的。  这篇笔记主要是基于udacity的《编程基础:python》这个视频,可能其中会穿插一些tensorflow里的代码,因为之前有不理解的地方,现在多多少少理解了一些。这个笔记主要是写给自己看的,为了加深印象,所以不喜勿喷 !(如果有写的不对的地方,还请各位指正)


----------------------------------------------------------------分割线---------------------------------------------------------------------

1. 安装python 2.7

这个视频是基于python 2.7来讲的,所以最好下载一个python 2.7。安装也很简单,网上资料也很多,当然你也可以按照这个链接里的步骤去安装:https://classroom.udacity.com/courses/ud036/lessons/990110642/concepts/36691786570923 


2.如何使用第三方模块?

python 如此强大在于它有着丰富的模块或者说是库函数,你可以做很多你想做的事,比如web开发,数据挖掘,爬虫等

就以课程中的例子, 该例子是通过运行程序向手机发送消息:

import twilio# from twilio.rest import Client    代表twilio文件里有一个rest文件,rest文件里有一个Client类# from twilio import rest # 一般插入某个模块直接import对应模块就可以了,当然也可使用关键字from,使用from后,你可以认为是插入了模块的某个特定的功能和属性,一个很明显的不同是:如果只是import twilio,要想用Client类则需要twilio.rest.Client,而采用from twilio import rest,则只要rest.Client。这是它们最明显的不同。# Your Account SID from twilio.com/consoleaccount_sid = "ACf7b5b692f1563b4761f0f8cccec16bee"# Your Auth Token from twilio.com/consoleauth_token  = "853b3149ada33ca55780abecf9c9f43f"client = twilio.rest.Client(account_sid, auth_token)# client = rest.Client(account_sid, auth_token)message = client.messages.create(    to="+86xxxxxxxxxx",     from_="(331)214-3327",    body="Hello from Python!")print(message.sid)

tips(关于使用import or from...import):  在构建大项目的时候,尽量用import modual ,这样会方便程序员知道该函数引用自哪个模块。 


3. 类的定义和使用

class DataSet(object):  def __init__(self, images, labels, fake_data=False, one_hot=False,               dtype=tf.float32):    """Construct a DataSet."""    self._images = images    self._labels = labels    self._epochs_completed = 0    self._index_in_epoch = 0
以上是tensorflow数据处理里的一段代码,最需注意的是 __init__(self, ...),对于def __init__(self, ...) 里的第一个参数永远都是self ,指代创建的实例本身。 有了该初始化操作,创建实例时必须传入参数。一旦创建实例,该初始化函数就会被调用,之前看见def 还以为是需要自己调用的函数。


补充:

 在一般的python文件中语句 if _name_== '_main_' 的作用:

 参考例子里的代码:

代码1:

# one.pydef func():    print("func() in one.py") print("top-level in one.py")if __name__ == "__main__":    # 对于_name_和_main_这两个特殊变量,它们是内置的,当所执行的程序并不是从外部import的情况下,name变量的值被置成_main_, 也就触发了恒等这个条件    print("one.py is being run directly")                   else:    print("one.py is being imported into another module")

command line:

python one.py

输出是:

top-level in one.pyone.py is being run directly

代码2:

# two.pyimport one          # 与上面代码不同的是这里将one.py这个文件插入到当前文件中,你可以想像该句的作用是将one文件里的 函数定义和类定义复制过来,只不过是隐藏了而已。所以先执行的是one.py文件里的语句。并且此时由于one文件是被imported的, 所以if条件是不满足的,执行else语句。print("top-level in two.py") one.func()if __name__ == "__main__":     print("two.py is being run directly")else:     print("two.py is being imported into another module")

command line:

python two.py

输出是:

top-level in one.pyone.py is being imported into another moduletop-level in two.pyfunc() in one.pytwo.py is being run directly

作用的话:我们经常在写代码时除了调动第三方模块,还需要import其他的文件,可能我们只是要调用其中的函数或者说代码重用,但又不想执行该文件。这个功能就达到了这个目的。

tensorflow的文件中的有用到以下代码:

    if __name__=='__main__':
    tf.app.run()
其他和上面都是一样的, 主要是tf.app.run()语句,看其源码的话,就会知道它的作用,这里先占个坑,到时候需要了解再去看。

tips:这门课程主要侧重在类的一些基本概念的介绍,而且通过几个好玩的小项目来加深这种概念的理解,所以感觉这门课程更适合完全没有编程基础的童鞋儿,有基础的直接可以看看[2]或者是learning the python in hard way(虽然我并没有看过)。

reference:
        [1] :  https://cn.udacity.com/course/programming-foundations-with-python--ud036    
        [2] :   廖雪峰python教程