1、自定义函数

  自定义函数格式如下:

def <函数名> (参数列表):
<函数语句>
return <返回值>
#!/usr/bin/python
# 定义函数,打印数字1~5
def printNum5():
# range函数,生成列表集合,有3个入参:start(可选,起始数),stop(终止数,生成的数不包含),step
for i in range(1,5+1):
print(i); printNum5();

  带参数的函数:

#!/usr/bin/python
# 定义函数,打印列表数据
def printNum(x):
for i in x:
print(i); printNum(['ls','pwd',6,9,'cd']);

  有默认参数的函数:

#!/usr/bin/python
# 求x的y次方,默认x为2,y为5
def cube(x=2,y=5):
return x**y; print(cube()); # x、y都使用默认值
print(cube(3)); # x 设置为 3,y 使用 默认值
print(cube(3,2)); # x、y都不使用默认值
print(cube(y=3)); # x 使用 默认值,y 设置为 3
print(cube(y=2,x=8)); # 打乱传参次序

  传递任意个参数:

#!/usr/bin/python
# 传递任意个参数:如果参数名前加上一个星号“*”,则表示参数是一个可变长参数
def addNum(*nums):
result = 0;
for i in nums:
result += i;
return result; print(addNum()); #
print(addNum(1,3)); #
print(addNum(8,8,6)); #

2、变量作用域

#!/usr/bin/python
def fun(x):
a = [1];
a.append(x);
print(a); a = [3,4,5];
fun(2); # a并没有变化
print(a);
#!/usr/bin/python
def fun(x):
global a; # 设置a为全局变量
a = [1];
a.append(x);
print(a); a = [3,4,5]; # 全局变量
fun(2); # a发生变化
print(a);

3、使用lambda 声明函数

  使用lambda可以声明一个匿名函数,lambda声明的是一个简单的函数。

  lambda 函数中不能使用 print() 函数

#!/usr/bin/python
# lambda函数 的好处就是简洁
fun = lambda x : x*x+1 # 声明一个lambda函数 print(fun(3));
print(fun);

4、可重用结构:python模块

  python中的模块,实际上就是包含函数或者类的python脚本。

  对于一个大型脚本,常常需要把功能细化到各个模块。

  导入模块写法:

import 模块名
import 模块名 as 新名字
from 模块名 import 函数名

  使用 “ from 模块名 import 函数名 ” 写法与 “ import 模块名 ”, 调用函数的区别是,前者可直接使用函数名调用函数,后者需要 “模块名.函数名” 调用函数。

#!/usr/bin/python
import math
print(math.sqrt(16)); from math import sqrt
print(sqrt(81));

  重新载入模块:

#!/usr/bin/python
import os
import imp a = imp.reload(os) # 重新载入模块
print(a);

  编写一个模块:

  包括两个文件,一个是模块文件,一个是调用文件。

# 文件 myPart.py
def show():
print("This is show"); name = "myPart-name";
#!/usr/bin/python

# 文件 test.py
import myPart myPart.show(); print(myPart.name);

  python 中的模块在哪里查找:

  编写好的模块,如果不和调用文件在同一个目录,那么要怎么查找呢,或者要怎么放置自己的模块呢?

#!/usr/bin/python
import sys print(sys.path) # 查看模块检索路径有哪些

  如果新加了一个模块放在当前路径下的module目录,如何添加路径呢?

#!/usr/bin/python
import sys
import os sys.path.append(os.getcwd()+'\\module'); # 添加一个目录,其中os.getcwd() 方法用于返回当前工作目录 print(sys.path);
import myPart myPart.show();

  对于模块脚本,python会在运行后将其编译成 .pyc 字节码文件;对于非模块的脚本,python不会再运行文件之后将其编译成字节码形式。

  如何查看模块提供的函数名:

#!/usr/bin/python
import sys
import os sys.path.append(os.getcwd()+'\\module'); # os.getcwd() 方法用于返回当前工作目录 import myPart print(dir(os)) # 使用dir 函数查看模块提供的函数名 print(dir(myPart))

  对于上面的每次运行都要加sys.path,其实是很不方便的,但是有解决办法,就是使用包。包其实就是一个相对于当前目录的路径而已

#!/usr/bin/python
import module.myPart print(dir(module.myPart)) module.myPart.show()

  简洁一点:

#!/usr/bin/python
import module.myPart as myPart print(dir(myPart)) myPart.show()

【python学习-4】可复用函数与模块的更多相关文章

  1. Python学习笔记4(函数与模块)

    1.Python程序的结构 Python的程序由包(package).模块(module)和函数组成. 模块是处理一类问题的集合,由函数和类组成. 包是由一系列模块组成的集合.包是一个完成特定任务的工 ...

  2. Python学习笔记总结(二)函数和模块

    一.函数 函数的作用:可以计算出一个返回值,最大化代码重用,最小化代码冗余,流程的分解. 1.函数相关的语句和表达式 语句        例子 Calls        myfunc(‘diege', ...

  3. Python学习笔记之常用函数及说明

    Python学习笔记之常用函数及说明 俗话说"好记性不如烂笔头",老祖宗们几千年总结出来的东西还是有些道理的,所以,常用的东西也要记下来,不记不知道,一记吓一跳,乖乖,函数咋这么多 ...

  4. PYTHON 100days学习笔记006:函数和模块的使用

    目录 Day006:函数和模块的使用 1.函数的作用 2.定义函数 2.1 语法 2.2 实例 2.3 函数的调用 4.函数的参数 4.1 必须参数 4.2 关键字参数 4.3 默认参数 4.4 不定 ...

  5. Python学习笔记010——匿名函数lambda

    1 语法 my_lambda = lambda arg1, arg2 : arg1 + arg2 + 1 arg1.arg2:参数 arg1 + arg2 + 1 :表达式 2 描述 匿名函数不需要r ...

  6. python教程(三)·函数与模块

    函数,这和数学中的函数有点关联,但又不是完全等价 概念 不说的这么官方,我就已自己的理解来表达 ^_^ 在数学中,把一个或多个值(输入x)进行一定的计算或者映射,得到一个值(输出y),这个计算或者映射 ...

  7. python学习交流 - 内置函数使用方法和应用举例

    内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...

  8. Python学习 :json、pickle&shelve 模块

    数据交换格式 json 模块 json (JavaScript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读.尽管 json 是JavaScript的一个子 ...

  9. python学习笔记:第八天(模块)

    Python3 模块 脚本上是用 python 解释器来编程,如果从 Python 解释器退出再进入,那么定义的所有的方法和变量就都消失了. 为此 Python 提供了一个办法,把这些定义存放在文件中 ...

随机推荐

  1. bug4 导入新工程时报 Target runtime com.genuitec.runtime.generic.jee60 is not defined

    系统加载工程后,报错Target runtime com.genuitec.runtime.generic.jee60 is not defined,在发布工程的同事电脑上正常.新导入的工程,出问题很 ...

  2. 图像处理之规则裁剪(Resize)

    1 图像裁剪 在实际工作中,经常需要根据研究工作要求对图像进行裁剪(Subset Image),按照实际图像分幅裁剪的过程,可以将图像分幅裁剪分为两种类型:规则分幅裁剪(Rectangle Subse ...

  3. C++ new动态数组初始化

    strlen函数是不包括‘\0’的长度的,sizeof计算的结果才包括'\0'的长度: C++ new动态数组初始化void testnew( const char* str ) { if (!str ...

  4. map经典代码---java基础

    package com.mon11.day6; import java.util.HashMap; import java.util.Map; /** * 类说明 :实现英文简称和中文全名之间的键值对 ...

  5. 生成器python

    一.列表生成式 需求:看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式 >>> a [0, 1, 2 ...

  6. Eclipse的一些常用的快捷键

    写代码的时候常用的: Ctrl + 鼠标左键: 进入函数定义,变量声明: Alt + ←: 回到上次编辑的地方, 同理 Alt + → 可以移回来 Ctrl + O: 查找当前类的所有函数,变量 Ct ...

  7. 介绍C++11标准的变长参数模板

    目前大部分主流编译器的最新版本均支持了C++11标准(官方名为ISO/IEC14882:2011)大部分的语法特性,其中比较难理解的新语法特性可能要属变长参数模板(variadic template) ...

  8. 用yaml来编写配置文件

    yaml是一个数据序列化的标准,适用于所有开发语言,最大的特点是可读性好. yaml的一个主要应用方向就是编写配置文件,有非常多的系统和框架采用yaml进行配置. yaml有以下基本规则: 1.大小写 ...

  9. Solr记录-solr基础内容

    Solr架构(体系结构) 在本章中,我们将讨论Apache Solr的架构. 下图显示了Apache Solr的体系结构的框图. Solr架构 - 构件块以下是Apache Solr的主要构建块(组件 ...

  10. CF&&CC百套计划4 Codeforces Round #276 (Div. 1) A. Bits

    http://codeforces.com/contest/484/problem/A 题意: 询问[a,b]中二进制位1最多且最小的数 贪心,假设开始每一位都是1 从高位i开始枚举, 如果当前数&g ...