学习的Python教程中的一些问题
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教程中的一些问题的更多相关文章
- 简明的Python教程中的几个疑惑点分析#2
#1简明的Python教程当中第十四章Python标准库介绍中的使用sys模块 假如你没看懂sys模块这一章节,那么没关系,看下面一段代码再看简明的Python教程中的sys模块实例你将很容易看懂 代 ...
- MVC4学习之官方教程中迁移版本库报错
因工作需要,学习MVC4,但是微软官方教程中迁移版本库步骤在本地测试报错 官方教程地址:http://www.asp.net/mvc/overview/older-versions/getting-s ...
- python学习:python文件中空格和换行符的捕获和文本文件的转存
0. 背景 之前公司的项目中,需要在嵌入式系统中实现一个http的网页端内容,由于项目历史遗留问题,公司是采用的将html文件转成c语言头文件的方式,每次修改页面端都需要从新编译一下程序,非常的繁琐. ...
- Python学习-15.Python的中的套接字socket
Python应用最广泛的要数web方面了.因此,socket显得十分重要. 要使用socket,必须引入socket模块,因此在Python脚本开头先写入 import socket 学过socket ...
- Python教程:Python中的for 语句
Python 中的 for 语句与你在 C 或 Pascal 中可能用到的有所不同. Python教程 中的 for 语句并不总是对算术递增的数值进行迭代(如同 Pascal),或是给予用户定义迭代步 ...
- 简明的Python教程当中的几个疑惑点分析#1
#1简明的Python教程中的第11章面向对象编程学习中的类与对象的方法里面 有这么一个案例:使用类与对象的变量 #coding:utf-8 #类与对象的变量学习 class Person: popu ...
- 学习笔记《简明python教程》
学习笔记<简明python教程> 体会:言简意赅,很适合新手入门 2018年3月14日21:45:59 1.global 语句 在不使用 global 语句的情况下,不可能为一个定义于函数 ...
- 《简明Python教程》学习笔记
<简明Python教程>是网上比较好的一个Python入门级教程,尽管版本比较老旧,但是其中的基本讲解还是很有实力的. Ch2–安装Python:下载安装完成后,在系统的环境变量里,在Pa ...
- Python学习教程(十)精选 TOP45 值得学习的Python项目
精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...
随机推荐
- 大型网站的 HTTPS 实践(四)——协议层以外的实践
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt390 1 前言 网上介绍 https 的文章并不多,更鲜有分享在大型互联网站 ...
- Winform控件输入的字母转换成大写
private void textBoxHbh_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar >= 'a' & ...
- 关于selenium IDE找不到元素
selenium IDE ,明明存在元素,却找不到元素 ,报错Element not found 标签: seleniumselenium IDE自动化测试ide 2016-10-31 13:25 1 ...
- 【2017集美大学1412软工实践_助教博客】团队作业4——第一次项目冲刺(Alpha版本)小组 成绩
第四次团队作业成绩公布 题目 团队作业4: http://www.cnblogs.com/happyzm/p/6722264.html 团队成绩 成绩公示如下: 检查项 会议内容 代码签入 心得体会或 ...
- 个人作业1——四则运算题目生成程序(基于C++)
题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 1 ...
- 201521123080《Java程序设计》第2周学习总结
1.本周学习总结 a.学习了如何建立远程仓库和本地仓库并建立连接. b.学习了一些基础语法. 2.书面作业 Q1.使用Eclipse关联jdk源代码,并查看String对象的源代码(截图)?分析Str ...
- sublime text 按下Ctrl + B 显示空白的解决办法
环境:windows xp , sublime text 2 条件:环境变量也已经设置好,可是无论怎么编译都是空白,如图: 于是鄙人百度之,发现不少网友都有这样的问题,但是网上给出的的解决方案千篇一律 ...
- 201521123121 《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 进程:每个进程都有独立的代码和数据空间,进程间的切换会有较大的开销,一个进程包含1--n个线程. 线程:同一类线程 ...
- PHP面向对象简单总结
类和对象对象:一切东西都可以看做对象,对象是类的实例化.类:类是对象的抽象,用来描述众多对象共有的特征. 定义类 class成员变量 和 成员方法访问修饰符 public共有的 private 私有的 ...
- openfire:Openfire源代码在eclipse中的运行配置 + 与spark结合进行二次开发
1.下载源代码:http://www.igniterealtime.org/downloads/source.jsp 2.把源代码解压出的openfire_src文件夹放至eclipse workpl ...