2017开始学习Python,在网上找了很多教程,最后看到了Vamei的教程,感觉很简单易懂,但是过程中难免有不太容易理解的问题,做一些随笔,加深记忆亦可让以后学习的同学少走一些弯路。

1 Python 进阶03模块      这一节总体还是挺简单易懂,但是到了 模块包 有个地方很容易出错,原文如下

“可以将功能相似的模块放在同一个文件夹(比如说this_dir)中,构成一个模块包。通过

import this_dir.module

引入this_dir文件夹中的module模块。该文件夹中必须包含一个__init__.py的文件,提醒Python,该文件夹为一个模块包。__init__.py可以是一个空文件。”

我按照这个教程在桌面建立了一个mk的文件夹,里面放了三个模块,一个first.py ,一个second.py ,一个__init__.py组成一个模块包,在终端用import mk.moudle 命令调用,出现 ImporError: No module named module 在网上找了半天错误原因,没找到啊。最后发现import mk.moudle后面的module只是一个例子,需要你换成自己模块包里有的模块,比如我换成了import mk.first就好了,也就是说.moudle不是调用格式。

但是导入模块包之后,调用模块包内模块的对象出现错误,比如我在first.py中定义了def laugh(): print('hahaha') 但是import mk.first之后,调用first.laugh 出现name 'first' is not defined还没搞明白什么原因。

2 Python中函数的参数。

(1)函数参数传递方式有位置传递,关键字传递,默认参数传递,包裹传递(包裹位置传递、包裹关键字传递),包裹位置传递在定义函数时,

def func(*name):   #参数name前面加上*,调用时func(1,4,6)  func(5,6,7,1,2,3),参数个数可以不同,所有的参数类型组合起来其实是tuple,通过type(name)就可以看出。
   print type(name)
   print name

包裹关键字传递,dict的类型为字典,定义时在dict前面加两个**,type(dict)可以看出类型。调用时dict收集关键字,传递给函数,func(a=1,b=9)  fun(m=1,n=8,v=9).

def func(**dict):
    print type(dict)
    print dict
包裹传递的关键就是在定义函数时,在相应的元组参数或词典参数前面加*或者**。
(2)解包裹。在定义是参数前面加*或者**成为包裹位置传递和包裹关键字传递;在调用时使用*或者**成为解包裹,调用的实参为元组时,前面加*,调用的实参为词典时,前面加**;比如定义函数

def func(a,b,c):   #实参为元组args=(1,3,5)时,func(*args);实参为词典dict={'a':1,'b':2,'c':3}时,func(**dict)
    print a,b,c
(3)参数传递方式可以混合,先位置,再关键字,再包裹位置,再包裹关键字

3 生成器的主要目的是构成一个用户自定义的循环对象。循环对象是包含有next()方法的对象,方法的目的是进行到下一个结果,结束后出现StopIteration错误。

f=open("text.txt")    f.next()   每调用一次出现一个结果,直到出现StopIteration。 open返回的实际就是一个循环对象。

生成器就是用来创建循环对象的,生成器的定义和函数类似,把return改为yield即可

def gen():
    a = 100
    yield a
    a = a*8
    yield a
    yield 1000

学习的Python教程中的一些问题的更多相关文章

  1. 简明的Python教程中的几个疑惑点分析#2

    #1简明的Python教程当中第十四章Python标准库介绍中的使用sys模块 假如你没看懂sys模块这一章节,那么没关系,看下面一段代码再看简明的Python教程中的sys模块实例你将很容易看懂 代 ...

  2. MVC4学习之官方教程中迁移版本库报错

    因工作需要,学习MVC4,但是微软官方教程中迁移版本库步骤在本地测试报错 官方教程地址:http://www.asp.net/mvc/overview/older-versions/getting-s ...

  3. python学习:python文件中空格和换行符的捕获和文本文件的转存

    0. 背景 之前公司的项目中,需要在嵌入式系统中实现一个http的网页端内容,由于项目历史遗留问题,公司是采用的将html文件转成c语言头文件的方式,每次修改页面端都需要从新编译一下程序,非常的繁琐. ...

  4. Python学习-15.Python的中的套接字socket

    Python应用最广泛的要数web方面了.因此,socket显得十分重要. 要使用socket,必须引入socket模块,因此在Python脚本开头先写入 import socket 学过socket ...

  5. Python教程:Python中的for 语句

    Python 中的 for 语句与你在 C 或 Pascal 中可能用到的有所不同. Python教程 中的 for 语句并不总是对算术递增的数值进行迭代(如同 Pascal),或是给予用户定义迭代步 ...

  6. 简明的Python教程当中的几个疑惑点分析#1

    #1简明的Python教程中的第11章面向对象编程学习中的类与对象的方法里面 有这么一个案例:使用类与对象的变量 #coding:utf-8 #类与对象的变量学习 class Person: popu ...

  7. 学习笔记《简明python教程》

    学习笔记<简明python教程> 体会:言简意赅,很适合新手入门 2018年3月14日21:45:59 1.global 语句 在不使用 global 语句的情况下,不可能为一个定义于函数 ...

  8. 《简明Python教程》学习笔记

    <简明Python教程>是网上比较好的一个Python入门级教程,尽管版本比较老旧,但是其中的基本讲解还是很有实力的. Ch2–安装Python:下载安装完成后,在系统的环境变量里,在Pa ...

  9. Python学习教程(十)精选 TOP45 值得学习的Python项目

    精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...

随机推荐

  1. [转] Java se 7新特性研究(二)

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp82   今天主要研究Java se 7中异常处理的新功能.从今天开始正在 ...

  2. poj 1149经典网络流构图

    题意:m个猪圈,n个客户,每个客户给出选则猪圈的钥匙和需要购买猪的个数,其中每次客户购买时客户选则的猪圈数量可以相互更换,问最大购买数量. 思路:以客户作为除源点汇点之外的点,然后对于每个猪圈从源点连 ...

  3. js实现换肤效果

    一,js换肤的基本原理 基本原理很简单,就是使用 JS 切换对应的 CSS 样式表文件.例如导航网站 Hao123 的右上方就有网页换肤功能.除了切换 CSS 样式表文件之外,通常的网页换肤还需要通过 ...

  4. 获取url中的参数(微信开发)

    alert(location.search.split('?')[1].split('&')[0].split('=')[1]); 说明:从当前URL的?号开始的字符串,以?号分割, 分割后索 ...

  5. §--------算法分界线--------§

    如题 As said in the title~ 计算机的cpu计算从根源上由最基本的逻辑电路(晶体管)组成,由此衍生出最基本的数值运算:四则运算.而此后所有的高级算法都是建立在这个基本计算原理(逻辑 ...

  6. UVW代码漫谈(一)

    博客园是个非常好的学习知识的地方,相信有很多人跟我一样,园龄3年,从博客园不知道拷了多少代码,看了多少博客,自己却一篇博客都没写过.真是罪过. 这次准备写几篇关于这个项目源码的阅读和理解的文章,大家一 ...

  7. 【Alpha阶段】第五次 Scrum Meeting

    每日任务 1.本次会议为第 五次 Meeting会议: 2.本次会议在上午09:35,大课间休息时间在陆大召开,召开本次会议为20分钟,汇报自己的任务和讨论接下来的任务: 一.今日站立式会议照 二.每 ...

  8. 团队作业8——第二次项目冲刺(Beta版本)5.24

    1.当天站立式会议照片 会议内容 1.总结前几次会议中出现的问题. 2.对第二天需要做的任务进行分配. 3.询问团队队员任务完成情况以及时间分配是否充分. 4.对今后的任务,发表自己的看法. 2.每个 ...

  9. 201521123022 《Java程序设计》 第一周学习总结

    1. 本章学习总结 通过这一周的学习,初次接触了Java,了解了Java与之前所用的C语言的不同之处,对JRE,JDK,JVM有了相应的基础了解.在安装了eclipse和JDK之后熟悉了一下eclip ...

  10. Oracle中如何插入特殊字符:& 和 ' (多种解决方案)-转载

    文章出处:http://blog.sina.com.cn/s/blog_5f39af320101gb3f.html 今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要给一个自定义变量A ...