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. mysql数据类型double和decimal区别详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt336 实数是带有小数部分的数字.然而,它们不只是为了存储小数部分,也可以使用 ...

  2. [转]RMI方式Ehcache集群的源码分析

    RMI方式Ehcache集群的源码分析   Ehcache不仅支持基本的内存缓存,还支持多种方式将本地内存中的缓存同步到其他使用Ehcache的服务器中,形成集群.如下图所示:   Ehcache支持 ...

  3. 通过编译lambda表达式来创建实例(可在反射时候用,效率比反射高一些)

    原文地址:https://rogerjohansson.blog/2008/02/28/linq-expressions-creating-objects/ 据说编译lambda创建实例是比反射快.实 ...

  4. oracle12c之 单机12.1.0.1打补丁

    1. 下载最新的12.1.0.1的DB PSU 与 OPatchp23054354_121010_Linux-x86-64.zipp6880880_121010_Linux-x86-64.zip 2. ...

  5. Android学习记录:线程

    在Java中,线程的建立方法如下. 新建一个类,接口Runnable,重载 run方法 import javax.swing.JTextField; public class test impleme ...

  6. Android学习记录:获取联系人

    在AndroidManifest中申请读取联系人的权限 <uses-permission android:name = "android.permission.READ_CONTACT ...

  7. JS自定义对象以及相关成绩系统完整案例演示

    [自定义对象] 1.基本概念 ①对象是拥有一系列无无序属性和方法的集合 ②键值对:对象中的数据,用以键值对的形式存在,对象的每个属性和方法,都对应一个键值,以键取值 ③属性:描述对象特征的一系列变量称 ...

  8. 转:【Java并发编程】之二十三:并发新特性—信号量Semaphore(含代码)

    载请注明出处:http://blog.csdn.net/ns_code/article/details/17524153 在操作系统中,信号量是个很重要的概念,它在控制进程间的协作方面有着非常重要的作 ...

  9. js Web存储方式

    JSON是数据交互中最常用的一种数据格式. 由于各种语言的语法都不同,在传递数据时,可以将自己语言中的数组.对象等转换为JSON字符串> 传递之后,可以讲JSON字符串,在解析为JSON对象. ...

  10. 团队作业9--测试与发布(Beta版)

    Beta版本测试报告 1.在测试过程中总共发现了多少Bug?每个类别的Bug分别为多少个? a. 修复的bug: 写入SD存储卡文件权限问题 页面正确跳转 及 部分页面闪退的问题 b. 不能重现的bu ...