函数的参数

默认参数: 函数的基本形参, 可以有默认参数, 什么是基本形参呢, 就是普通变量, 如字符串, 数字等. 并且带有默认参数的形参, 要放在后边.

传参时, 不必将所有的参数都传递, 可以只传递部分参数, 但是要明确指出你传递的参数.例如

虽然, a 在 c 的前边, 但是传参时可以显示制定将参数传给谁, 而不是依照顺序来传递.

可变参数, 列表(数组)*numbers和字典(键值对)**keywords

可以看到 列表(数组)的样子是 *numbers, 字典(键值对)的样子是 **keywords

传值, 还是传址?

基本形式参数类型, 是按照传值得方式, 但是类似列表和字典就是按照传址的方式.

模块

编写模块有多种方法, 但是, 最简单的方法是创建以 .py为扩展名的文件, 在文件中包含函数和变量.

如何使用模块

输出

当python执行 import sys 语句的时候, 它会寻找 sys 模块, 在本例中, 它是内置模块, 所以python知道它在哪里.

如果它是未编译的模块, 如用 python 写的模块, python解释器就会查找在 sys.pyth变量中的路径, 如果模块找到了, 就会运行那个模块的主体语句, 模块就可以利用了, 注意, 初始化过程仅在我们第一次导入模块的时候. (也就是说, 我们要导入的模块, 在我们程序运行的时候, 可能也会运行1次,加载到内存了).

在 sys 模块中, argv 变量可以用 sys.argv来引用, 这样的命名不会跟你程序本身的名字冲突.

当我们运行一个python 程序带参数时, python 就帮助我们将参数存储在了 sys.argv中, 这是一个字符串数组.

记住, 脚本名称本身就是第一个参数, 所以, 这里 sys.argv[0] 应该是 using_sys.py

sys.path 包含输入模块的目录列表, 我们可以观察到 sys.path的第一个字符串是空的-这个空的字符串表示当前目录也是 sys.path 的一部分, 这与 python-path的环境变量相同, 这意味着你可以直接输入位于当前目录的模块.

导入一个模块相对来说是一个比较费时的事情, 所以, python做了一些技巧改善.

1. 一种方法是创建按字节编译文件, 这些文件以.pyc作为扩展名.(中间状态) 这些.pyc文件通常与.py文件相同的方式在相同的路径中被创建. 如果 python 没有写入当前路径的权限, .pyc文件就不会被创建.

from ... import

如果你想直接输入 argv 变量到你的程序中(而不是每次都需要使用它时打 sys.), 那么你可以使用 from sys import argv 语句. 那么你可以使用 from sys import argv语句, 如果你想输入所有的sys模块的名字, 那么你可以使用from sys import * 语句. 一般来说, 应该避免使用 from ... import 而使用 import. 因为这样可以使你的程序更加易读.也可以避免名称的冲突.

模块的 __name__

每个模块都有一个名称, 在模块中可以通过语句来找出模块的名称. 加入我们只想在程序本身被使用的时候运行主块(非其作为模块引用被其他程序调用).而在它被别的模块输入的时候不运行主块, 我们该怎么做呢? 这可以通过模块的__name__属性完成.

如何工作: 每个 python 模块都有它的__name__, 如果它是'__main__', 这说明这个模块被用于单独运行, 我们可以进行相应的恰当的操作.

到目前为止, 你一定已经开始看到了组织你的程序的层次, 变量通常在函数内部运行, 函数和全局变量通常在模块内部运行. 那么, 如果你想自己组织模块呢? 包可以帮你完成任务.

包是模块的文件夹, 有一个特殊的 __init__.py文件,用来表明这个文件夹是特殊的因为其包含有python模块.

python 02的更多相关文章

  1. [Python] 02 - String

    字符串 string 一.基本性质 不变性 Immutability 要变就 --> list --> string 二.功能函数 功能函数 S = 'Spam" S.find( ...

  2. python 02/100例

    题目 输入某年某月某日,判断这一天是这一年的第几天? 分析 例如:2018年6月19日 天数 = 19天 + 一月天数 + 2月天数 + ... + 6月天数 注意 闰年的2月是29天,如果年份是闰年 ...

  3. python 02 8/21-8/23

    计算机由硬件系统和软件系统组成,硬件系统分为由CPU(运算器+控制器)+内存储器(电信号)组成的主机部分,由输入设备+输出设备+外存储器(硬盘(磁信号).U盘)组成的外设部分.软件系统由系统软件和应用 ...

  4. Python 02 编写代码

    原文:https://www.cnblogs.com/jimmy-share/p/9784219.html 方式: 交互式编程:打开python.exe文件后,直接输入代码即可.文件的位置(我本地): ...

  5. 机器学习 - Python 02

    好了,咱们接着上一节的内容,继续学习机器学习中的Python语法部分.这一节算是Python语法的最后一节了.也就是说如果真的看懂了这两节的内容,理论上说就机器学习的领域或者方向,语言已经不是问题了. ...

  6. python 02 if while

    1. if的格式 >>> 1<3 True 真>>> 1>3False 假 if   条件:                     条件 + : (t ...

  7. 实验与作业(Python)-02 Python函数入门与温度转换程序

    截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...

  8. 【Python 02】计算机与程序设计

    计算机 根据一系列指令对数据进行处理的工具或机器. 特征: 可以进行计算 根据指令执行任务 组成: 运算器+控制器(CPU) 存储器(内存及硬盘):内存存储临时数据.硬盘存储相对永久的数据 输入设备和 ...

  9. 实验与作业(Python)-02 Python函数入门与温度转换程序(函数、input、eval、int、float、列表)

    截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...

随机推荐

  1. idea转eclipse 设置注意。

    下载适合的eclipse

  2. vue-cli安装失败问题

    1.尝试 管理员权限 安装,看是否能解决问题 2.仍未解决问题, 系统变量增加:  C:\Program Files\nodejs\node cache\node_modules\vue-cli\bi ...

  3. ES5和ES6中的继承 图解

    Javascript中的继承一直是个比较麻烦的问题,prototype.constructor.__proto__在构造函数,实例和原型之间有的 复杂的关系,不仔细捋下很难记得牢固.ES6中又新增了c ...

  4. Oracle11完全卸载

    1.停用oracle服务:进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止 2.在开始菜单中,找到Universal Installer,运行Oracle Universal I ...

  5. Redis客户端连接池

    使用场景 对于一些大对象,或者初始化过程较长的可复用的对象,我们如果每次都new对象出来,那么意味着会耗费大量的时间. 我们可以将这些对象缓存起来,当接口调用完毕后,不是销毁对象,当下次使用的时候,直 ...

  6. Redmine开发帮助

    这里先零星记录二次开发用得上的知识点: 1.windows下开发环境,参考此文.最好使用rubyinstaller安装,注意选择版本.或者直接安装railsinstaller. 2.获取自定义内容,参 ...

  7. C#保存CookieContainer到文件

    摘自:http://licstar.net/archives/6 “C# save CookieContainer to file”,发现了一份优雅的代码.http://stackoverflow.c ...

  8. c++中的<<函义

    1.一个是左移运算:x = 4<< 2; 2.输出流运算:cout <<x;//X的值输出流到设备中.

  9. $().each 和表单事件的坑

    在用each循环时 1.想结束循环 return false 2.想跳过某循环 return 3.想跳出function 不行,请切换成其他循环如 for 使用form表单事件 1.必须要有submi ...

  10. javascript高级程序设计第5章,引用类型

    object类型: 创建object实列的方式有两种,一种是new()方法,一种是对象字面量表示法: 第一种法方:  var obj = new object(); obj.name = 'name' ...