浅谈Python中函数的定义及其调用方法
作者:PigNing 发布时间:2022-09-01 09:35:35
一、函数的定义及其应用
所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤
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.模块的调用
1.
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
来源:https://blog.csdn.net/ningyuxuan123/article/details/81113447


猜你喜欢
- '************************************* '读取文件 &
- 比如如下的html他是在span标签下的class为name,id为is-like-span这样就可以通过这样的代码进行方法:isClike
- 一、python3对文本和二进制数据做了区分。文本是Unicode编码,str类型,用于显示。二进制类型是bytes类型,用于存
- 前言最近因为工作的原因,在做APP购物车下单支付这一块儿.被测试提了一个bug,当点加入购物车点的比较快的时候,同一个商品在购物车中出现了两
- 初学tensorflow,如果写的不对的,请更正,谢谢!tf.reshape(tensor, shape, name=None)函数的作用是
- 前言一年一度的虐狗节终于过去了,朋友圈各种晒,晒自拍,晒娃,晒美食,秀恩爱的。程序员在晒什么,程序员在加班。但是礼物还是少不了的,送什么好?
- 最近,同事需要从数个表中查询用户的业务和报告数据,写了一个SQL语句,查询比较慢:Select S.Name,S.AccountantCod
- Windows下配置Emacs来开发Python去年在网上偶然的一个机会知道了Emacs的存在,在周围前辈们都在夸赞Sublime好用的时候
- #设a为字符串import timea = "2011-09-28 10:00:00"#中间过程,一般都需要将字符串转化
- 这个程序的功能非常的简单,就是每天在系统中新建一个文件夹。文件夹即当前的时间。此代码是在同事那边看到的,为了锻炼下自己薄弱的Python能力
- 推导式是Python中很强大的、很受欢迎的特性,具有语言简洁,速度快等优点。推导式包括:1.列表推导式2.字典推导式3.集合推导式嵌套列表推
- 1.进入官网https://www.python.org/,点击Downloads下的Windows按钮,进入下载页面。2.如下图所示,点击
- 新建label与button,并设置位置(grid)import tkinter as tkroot = tk.Tk()label = tk
- 目录四种参数仅限关键字参数内省中的函数参数函数注解四种参数Python函数func定义如下:def func(first, *args, s
- 先了解几个事件对象属性target 指事件源对象,点击嵌套元素最里层的某元素,该元素就是target。IE6/7/8对应的是srcEleme
- JavaScript/Dom中有很多很零碎的东西,让人总是感觉理解的有些“朦胧”,因此,有时候还是应该总结一下,对于Event对象,前两天看
- 一 描述561. 数组拆分 I - 力扣(LeetCode) (leetcode-cn.com)给定长度为 2n 的整数
- 这篇文章主要介绍了Python魔法方法 容器部方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 一、系统要求电影售票系统程序,应具备以下几点功能:1.用户认证系统用户分为用户、管理员两个角色,系统可根据不同用户角色权限进入不同界面,所有
- 1. 单行导入与多行导入在 Go 语言中,一个包可包含多个 .go 文件(这些文件必须得在同一级文件夹中),只要这些 .go 文件的头部都使