Python中函数的定义及其调用

一、函数的定义及其应用

所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用
函数的使用包含两个步骤
1.定义函数–封装独立的功能
2.调用函数–享受封装的成果
函数的作用:在开发时,使用函数可以提高编写的效率以及代码的重用‘'
函数:
函数是带名字的代码块,用于完成具体的工作需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用该任务的函数,让python运行其中的代码,你将发现,通过使用函数,程序编写,阅读,测试 和 修复都将更容易

1.定义函数
def 函数名():
函数封装的代码
1.def是英文define的缩写
2.函数名称应该能够表达函数封装代码的功能,方便后续的调用
3.函数名称的命名应该符合标识符的命名规则
可由字母,下划线和数字组成
不能以数字开头
不能与关键字重名

参数的作用
函数,把具有独立功能的代码块组织成为一个小模块,在需要的时候调用
函数的参数,增加函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据
1.在函数内部,把参数当作变量使用,进行需要的数据处理
2.函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过
参数传递

形参和实参
形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的

函数的返回值
在程序开发中,有时候,会希望一个函数执行结束后(举例子:温度计函数,要返回给我>们当前的温度),告诉调用者一个结果,以便调用者针对具体的结果作出后续的处理
返回值是函数完成工作后,最后给调用者的一个结果
在函数中使用return关键字可以返回结果
调用函数一方,可以使用变量来接收函数的返回结果

局部变量和全局变量
局部变量是在函数内部定义的变量,只能在函数内部使用
全局变量是在函数外部定义的变量,(没有定义在某一个函数内),所有函数内部都可以使
用这个变量

局部变量
局部变量是在函数内部定义的变量,只能在函数内部使用
函数执行结束后,函数内部的局部变量,会被系统回收
不同的函数,可以定义相同的名字的局部变量,但是各用各的不会产生影响

局部变量的作用
在函数内部使用,临时保存函数内部需要使用的数据

变量进阶
目标
变量的引用
可变和不可变类型
局部变量和全局变量

变量的引用
变量和数据都是保存在内存中的
在python中函数的参数传递以及返回值都是靠引用传递的

引用的概念
在python中
变量和数据是分开存储的
数据保存在内存中的一个位置
变量中保存的是数据在内存中的地址
变量中记录数据的地址,就叫做引用
使用id()函数可以查看变量中保存数据所在内存的地址

二、函数的跨文件调用

模块文件:每一个python源文件都可以是一个模块文件,可以在一个python文件中定义函数或者变量,然后在另一个函数使用import filename导入这个模块,导入之后,可以使用模块名.变量或者模块名.函数的方式使用这个模块文件的函数和变量
首先定义一个函数

# 1.定义一个函数,能够打印*组成的一条分隔线

def print_line():
    print '*' * 50

print_line()

# 2.定义一个函数能够打印由任意字符串组成的分割线

def print_line(char):
    print char * 50
print_line('&')

# 3.定义一个函数能够打印任意重复次数的分隔线
def print_line(char,times):
    print char * times
print_line('%',20)

# 4.定义一个函数能够打印五行分隔线,
# 分隔线要求符合需求3

# def print_line(char,times):
#     print char * times

def print_lines(char,times):
    """打印多行分隔线

    :param char: 分隔线使用的分隔字符
    :param times: 分隔线重复的次数
    """
    row = 0
    while row < 5:
        print_line(char,times)
        row += 1

print_lines('!',70)

模块文件:每一个python源文件都可以是一个模块文件
可以在一个python文件中定义函数或者变量
然后在另一个文件中使用 import filename 导入这个模块
导入之后,就可以使用 模块名.变量/模块名.函数的方式,
使用这个模块中定义的函数和变量

import func_04
import fun_01
print func_04.name
func_04.print_lines('*',80)
result = fun_01.sum_2_sum(3,6)
print result

2.模块的调用

test1文件中
title = '模块1'

# 函数
def demo1():
    print '今天学习%s' %title
# 类
class Cat(object):
    pass

title = '模块2'

test2文件中
# 函数
def demo1():
    print '今天学习%s' %title
# 类
class Dog(object):
    pass
import test1
import test2
test1.demo1()
test2.demo1()

cat = test1.Cat()
print cat
dog = test2.Dog()
print dog

使用as指定模块的别名(大驼峰命名法)

from test1 import Cat
# 如果重名的话,则第二个导入的覆盖同名的第一个
from test1 import demo1 as test_demo1
from test2 import demo1

cat = Cat()
print cat
test_demo1()
demo1()

2.python的解释器在导入模块的时候,会:
1.搜索当前目录指定的模块文件,如果有就直接导入
2.如果没有,再搜索系统目录
注意:在开发时,给文件起名,不要和系统模块文件重名
所以在导入文件时,不能起和系统文件重名的名字,例如下例的random

import random
ran = random.randint(1,10)
print ran

3.name属性
功能:测试模块的的代码只在测试情况下被运行,而在导入时不会被运行
name时python的一个内置属性,记录这一个字符串
被其他文件导入时,name就是模块名
如果是当前执行的程序name就是main

def wn():
    print '今天是个好日子'

if __name__ == '__main__':
    print __name__
    print '模块的引用'
调用函数
import test
wn = test.wn()
print wn

到此这篇关于Python中函数的定义及其调用的文章就介绍到这了,更多相关Python函数定义及调用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何在c#中使用opencv函数库

    这个demo用c#实现图片裁剪和半透明融合的功能演示程序.功能挺简单的,就是把一张固定大小的图片先做边缘羽化,然后贴到一个圆形泡泡形状的底图上,最后把结果半透明融合到一张背景图上. C#实现图像的羽化.将图片裁剪复制到一个圆形图片这些都挺简单的,最后一步融合到背景图上需要用到opencv的seamlessClone方法.网上搜索c#使用opencv的方法有很多,一种是直接使用opencv的C#版本,一种是先把opencv的方法封装到一个dll然后用c#调用这个dll导出的方法.对于我这个需求,后

  • 浅谈Python中函数的定义及其调用方法

    一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 1.定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时,使用函数可以提高编写的效率以及代码的重用'' 函数: 函数是带名字的代码块,用于完成具体的工作 需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用该任务的函数,让python运行其中的代码,你将发现,通过使用函数,程序编写,阅读,测试和修复都将更容易 1.定义函数 def

  • Python中函数的定义及其调用

    一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用 函数的使用包含两个步骤 1.定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时,使用函数可以提高编写的效率以及代码的重用'' 函数: 函数是带名字的代码块,用于完成具体的工作需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用该任务的函数,让python运行其中的代码,你将发现,通过使用函数,程序编写,阅读,测试 和 修复都将更容易 1.定义函数 d

  • Python中函数的创建及调用

    目录 一.前言 二.创建一个函数 三.调用函数 四.pass空语句 一.前言 提到函数,大家会想到数学函数吧,函数是数学最重要的一个模块,贯穿整个数学学习,在Python中,函数的应用非常广泛.在前面我们已经多次接触过函数.例如,用于输出的print()函数.用于输入的input()函数,以及用于生成一系列整数的range()函数.这些都是Python内置的标准函数,可以直接使用.除了可以直接使用的标准函数,Python还支持自定义函数.即通过将一段有规律的.重复的代码定义为函数,来达到一次编写

  • Python中函数的创建与调用你了解吗

    目录 创建函数 调用函数 函数的参数 形参和实参 传递参数 位置参数 默认参数 函数的返回值 案例:计算任意两个数字的和 模块基础 定义模块 基本概念 导入模块 (import) 模块加载 (load) 模块特性及案例 模块特性 总结 创建函数 函数用 def 语句创建,语法如下: def 函数名(参数列表): # 具体情况具体对待,参数可有可无 """函数说明文档字符串""" 函数封装的代码 -- 标题行由 def 关键字,函数的名字,以及参数

  • Python中函数及默认参数的定义与调用操作实例分析

    本文实例讲述了Python中函数及默认参数的定义与调用操作.分享给大家供大家参考,具体如下: #coding=utf8 ''''' Python中的函数使用小括号调用.函数在调用之前必须先定义. 如果函数中没有return语句,就会自动返回None对象. Python是通过引用调用的.如果函数内对参数的改变会影响到原始对象. 只有可变对象会受此影响,对不可变对象,它的行为类似按值调用. ''' ''''' 定义函数: def function_name([arguments]): "option

  • Python中函数的参数定义和可变参数用法实例分析

    本文实例讲述了Python中函数的参数定义和可变参数用法.分享给大家供大家参考.具体如下: 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解.其实只要把函数参数定义搞清楚了,就不难理解了. 先说说函数定义,我们都知道,下面的代码定义了一个函数funcA def funcA(): pass 显然,函数funcA没有参数(同时啥也不干:D). 下面这个函数funcB就有两个参数了, def funcB(a,

  • Python中函数参数调用方式分析

    本文实例讲述了Python中函数参数调用方式.分享给大家供大家参考,具体如下: Python中函数的参数是很灵活的,下面分四种情况进行说明. (1) fun(arg1, arg2, ...) 这是最常见的方式,也是和其它语言类似的方式 下面是一个实例: >>> def fun(x, y): return x - y >>> fun(12, -2) 14 (2) fun(arg1, arg2=value2, ...) 这种就是所谓的带默认参数的函数,调用的时候我们可以指定

  • 在Python中居然可以定义两个同名通参数的函数

    一个意外的场景,我发现Python模块中是可以定义相同的名称和参数的函数的, 虽然在eclipse中报错了,但是执行时没有问题的,这个是IDE的问题. 其中的含义是因为第一个函数原本由test指向,然后解释器解析到第二个test函数时,相当于test指向了第二个函数, 那么调用test()时,执行的是第二个函数内容. 最近发现python更加灵活和自由,但是需要知道其中的原理,不然会输出莫名其妙的结果. 以上这篇在Python中居然可以定义两个同名通参数的函数就是小编分享给大家的全部内容了,希望

  • ES6中箭头函数的定义与调用方式详解

    本文主要介绍的是关于ES6箭头函数的定义与调用方式的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 基本用法: ES6中允许使用"箭头"(=>)定义函数 var f = v => v; 上面代码相当于: var f = function( v ) { return v; } 根据箭头函数有参数和无参数来区分 1.无参数的箭头函数 var f = () => 5; 等同于 var f = function() { return 5}; 2.有参数的箭头函数 v

  • 深入理解python中函数传递参数是值传递还是引用传递

    目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用"的方式.实际上,这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典 或者列表)的引用,就能修改对象的原始值--相当于通过"传引用"来传递对象.如果函数收到的是一个不可变对象(比如数字.字符或者元组)的引用,就不能 直接修改原始对象--相当于通过"传值"来传递对象. 你可以在很多讨论该问题

随机推荐