当前位置: 首页 > 编程日记 > 正文

在python中使用关键字define定义函数_python自定义函数def的应用详解

这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数

自定义函数,编程里面的精髓!

def

自定义函数的必要函数:def

使用方法:def 函数名(参数1,参数2,参数…):

函数体(语句块)

return [返回值]

注意事项函数名的命名规则:和标识符的基本规则是一样的,基本上由小写字母和数字下划线构成

def 是关键字,不能够修改(define的简称)

函数后面一定要加括号(英文状态的)括号里面是否加参数看具体情况

括号后面的冒号不能够忘记

函数体必须加上缩进(建议4个空格)

案例分析def hello(): #自定义hello()函数

print('hello world !')

hello() # 调用函数

hello world ! # 输出结果

该处是定义了一个输出‘hello world !’的函数,只要调用hello()即可实现对函数体的调用。

来个复杂点的练练手,感受一下磨刀霍霍向木兰def add(x, y): # 新建add()

return x+y

add(3, 7) # 调用add()

运行ing

输出none

啊累累!啊累累!啊累累!

我写了个bug还是写了一个寂寞?

哦哦哦!我建了一个房子没有留门(泪目)

没有输出怎么能够有结果?print(add(3, 7))

print(add('hello ', 'world'))

#运行结果

10

hello world

作死挑战

记得每一次调用函数都加了 ()那么不加括号的是什么东西?

难道就是传说中的写了个寂寞还是什么东西?

让我们一起来作死看看print(hello) # 调用hello

print(add) # 调用add

结果:

哇哦!他真的可以有

经过查询他显示的是这个函数的内存地址,而不是这个函数的结果什么的,函数并没有被调用温馨提示

调用函数一定要在函数名后面加上括号

函数参数

自定义函数的参数,分为几大类:位置传参

关键字传参

必选参数

默认参数

可变参数

……

形参与实参

白话时间:(个人理解基础的表达,如有不同之处请指教提出)

形参:

就是参数名称,一个没有被赋值的变量名,不会实际的参与函数的运算,而是起到一个类似占位符的作用。

实参:

实际参加函数运算的值,已经赋值给了相对应的变量名。

ps:以上基于个人理解,本非准确表达,在个人理解基础上的白话表达

位置参数

位置参数就是按照参数的位置进行表达和相对应的

参数写的位置决定了它所对应的值,这种写法如果有多个参数必须注意,写错位置整个函数有可能会报错,整个程序有可能会奔溃!!!

关键字参数

关键字参数虽然写法较为麻烦但是很好的解决了多个参数因为位置错误导致的函数报错及程序不稳定问题

通过定义的参数名称来确定对应参数的值,可以有效的解决问题

例:print() 里面除了经常用的输出内容还有end参数

end参数默认是‘\n’,如果通过关键字参数进行重新定义就可以改变for i in range(10):

print(i)结果:

0

1

2

3

4

5

6

7

8

9for i in range(10):

print(i,end= ' ')结果:

0 1 2 3 4 5 6 7 8 9

默认参数

在函数涉及过程中很多参数不一定所有人一定用的上,可以设置一个默认值,这样子需要的人可以DIY,没有需要的就采用默认参数

比如print()中 end 就是默认参数默认值为‘\n’def add(x=0, y=0):

return x+y

print(add())

结果:

0

必选参数

必选参数就是必须要写的参数,这个与默认参数相对,不是默认参数就是必选参数,如果没有对必选参数进行导入就会引发报错,导致系统函数奔溃def add(x, y): # 新建add()

return x+y

print(add())

Traceback (most recent call last):

print(add())

TypeError: add() missing 2 required positional arguments: 'x' and 'y'

这个就是缺少x,y参数导致的异常。

所有在使用函数及自定义时要注意必选参数的设置

可变参数

可变参数这个名字比较高大上,但是实际上很简单

比如要写一个多个数字相加的函数怎么办呢?

直接写?def add(x, y): # 新建add()

return x+y

那如果是3个值呢?

会应为多了一个参数报错

那么就改成三个参数?def add(x, y, z): # 新建add()

return x+y+z

问题来了如果是2个值那么就会报错缺一个参数,如果是4个及以上就会报错,多了参数

啊啊啊啊啊啊啊啊啊!

只是什么东西,难度python一世英名就毁在这里了嘛?

不不不!

神奇的事情发生了def 函数名(参数1,参数2,参数…,*可变参数):

函数体(语句块)

返回值

emmm,奇怪的知识增长了def add(x, *y):

for num in y:

x += num

return x

print(add(2,3,4))

结果

9

ps:*y 所产生的是一个tuple(元组)

我们需要先逐个遍历才能够拿到每一个的结果。

可变关键字参数

如果有多个关键字参数或者字典的导入使用 *参数名 无法满足怎么办

难道python一世英名就这样子栽了吗?

不不不

一个 * 不行那么就来两个 **def personinfo(name, age, **message):

print(f'name:{name},age:{age},{message}')

personinfo('张三', 23, message = {'city':'北京', 'heigh': 180})

结果:

name:张三,age:23,{'message': {'city': '北京', 'heigh': 180}}

在里面得到的结果是一个字典,看例子可以知道得到了一个镶嵌的字典

参数问题解答参数的书写要求:

① 必选参数写在最前面

②默认参数写在必选参数后面

③默认参数后面是关键字参数

④关键字后面是*函数名(可变参数)

⑤后面跟着可变关键字参数(**函数名)

ps:按照该顺序走,没有的可以不写def a(x , y=0, *z, **i):

print(f'x:{x};y:{y};z:{z};i')

以上就是举例子,命名方式不符合规定,不要借鉴

不安以上方式可能出现各种奇怪的情况

到此这篇关于python自定义函数def的应用详解的文章就介绍到这了,更多相关python自定义函数def内容请搜索ZaLou.Cn

相关文章:

在Win7 + VMware7下安装Xcode 4

我的Mac OS X是在Win7下虚拟机上安装的,我先把xcode_4.0.2_and_ios_sdk_4.3.dmg下载到Win7下某个目录下,然后共享该目录,然后启动Mac OS X,开始安装:1. 找到Win7下xcode_4.0.2_and_ios_sdk_4.3.dmg所在的共享文件夹&am…

plsql误删除数据,提交事务后如何找回?

select *from tbs_rep_template as of timestamp to_timestamp(2018-07-12 14:23:00, yyyy-mm-dd hh24:mi:ss)where tplname like %工业管道定期检验报告%;--其中2018-07-12 14:23:00为:误删数据的大致时刻的提前时间转载于:https://www.cnblogs.com/demon09/p/9300756.html

配置flutter For IOS

https://www.cnblogs.com/lovestarfish/p/10628205.html第一步,下载flutter最新版,解压到自己的目录里: 提供网址:https://flutter.io/setup-macos/ 第二步,终端配置环境,这里我配知道了IOS,安…

Unity3D 镜面反射

原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:【119706192】 本文链接地址: Unity3D 镜面反射 这是官方CharacterCustomization事例中的镜面反射shader。 1.首先需要一个plane当镜子,将代码MirrorReflection.cs文件绑定到镜子…

python后端学什么框架_献给正在学习python的你, 10个最受欢迎的Python开源框架

很多小伙伴在学习wen的时候说,有没有几个常用的框架,好多小伙伴都只说对了其中几个,只有少部分是说正确的,想要了解更多,欢迎大家订阅微信公众号:Python从程序猿到程序员,或者加4913.08659&…

HubbleDotNet 简介 (转)

系统简介 HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件。开源协议是 Apache 2.0。HubbleDotNet提供了基于SQL的全文检索接口,使用者只需会操作SQL,就可以很快学会使用HubbleDotNet进行全文检索。 HubbleDotNet可以实现全文索引…

JavaScript夯实基础系列(四):原型

在JavaScript中有六种数据类型:number、string、boolean、null、undefined以及对象,ES6加入了一种新的数据类型symbol。其中对象称为引用类型,其他数据类型称为基础类型。在面向对象编程的语言中,对象一般是由类实例化出来的&…

python中意外缩进是什么意思_Python 的缩进是不是反人类的设计?

前些天,我写了《Python为什么使用缩进来划分代码块?》,文中详细梳理了 Python 采用缩进语法的 8 大原因。我极其喜欢这种简洁优雅的风格,所以对它赞美有加。 然而文章发出去后,非常意外,竟收到了大量的反对…

netstat命令

使用netstat -nap可以查看当前发送和接收队列,Send-Q 很高时表示发送队列太长,可能网络阻塞 转载于:https://www.cnblogs.com/wx170119/p/11606909.html

mysql操作数字名称的schema时字符的逃逸问题

一个简单的问题折腾了好大一会儿,mysql不支持直接操作数字名称的schema,在sql操作时必须做字符逃逸,如: char sql_str[1000]; memset(sql_str, 0x0, 1000); sprintf(sql_str, "CREATE TABLE IF NOT EXIST %s.%s(data_id INT(…

使用XMLSpyDocEditPlugIn2.dll,页面加载失败

维护项目中遇到问题,项目用到XMLSpyDocEditPlugIn2.dll的acticex控件,客户换了其他pc后,不能下载安装acticex控件,所以不能使用此功能。解决方法: 1 下载 XMLSpyDocEditPlugIn2.dll, 路径 http://download.…

[bzoj4562][Haoi2016]食物链_记忆化搜索_动态规划

食物链 bzoj-4562 Haoi-2016 题目大意:给你n个点,m条边的DAG,求所有的满足条件的链,使得每条链的起点是一个入度为0的点,中点是一条出度为0的点。 注释:$1\le n\le 10^5$,$1\le m\le 2*10^5$。 …

Apache源码包在LINUX(CENTOS6.8)中的安装(出现问题及解决)

任务:在CENT6.8系统中安装Apache(版本为:httpd-2.4.41) 前提:由于源码包必须先编译后安装,所以必须先安装编译器:gcc 理论步骤: 1.检测gcc软件包,如果不存在则进行安装。…

append函数_连载|想用Python做自动化测试?函数的参数传递机制及变量作用域

“ 这一节有点难。看不懂没关系。继续往后学,回头再来看。”10.6 函数参数传递的机制10.6.1 值传递与引用传递编程语言的参数传递机制通常有两种:值传递拷贝参数的值,然后传递给函数里的新变量。这样,原变量和新变量之间互相独立&…

PowerDesigner生成数据库

此文中图片不小心被删除了,特重写了PowerDesigner生成数据库修改 一、 用POWERDESIGNER生成数据库 FILE-》NEW 在MODEL NAME中输入模版名 在DBMS中选择要连接的数据库类型 点击确定 确定后出现如下页面 选中工具条面版上的 表按钮 在…

随想_8_Windows_XP_Explorer_错误

最近发现微软的系统的稳定性,还是有待提高啊,这不XP SP3的资源管理器,就犯毛病了,俗话说有图 有真相,各位请看: 大家看,资源管理器左边的导航栏, 就可以发现,里面很多东西…

webpack笔记(6)调试模式

在配置devtool时,webpack给我们提供了四种选项。 source-map:在一个单独文件中产生一个完整且功能完全的文件。这个文件具有最好的source map,但是它会减慢打包速度;cheap-module-source-map:在一个单独的文件中产生一个不带列映射的map,不带…

nicstat命令安装与分析

nicstat安装包下载与安装: wget https://downloads.sourceforge.net/project/nicstat/nicstat-1.95.tar.gz tar -zxvf nicstat-1.95.tar.gz cd nicstat-1.95 cp Makefile.Linux Makefile vi Makefile 后修改 CFLAGS $(COPT) make && make install //…

component是什么接口_【Android每日一题】从Activity创建到View呈现中间发生了什么?...

前言前段时间公司招人,作为面试官,我经常让面试者简述View的绘制流程。他们基本都能讲明白View的测量(measure)、布局(layout)、绘制(draw)等过程。还有少数人会提到DecorView和ViewRootImp的作用。但是,当我继续追问关于Window的内容时&…

wp 删除独立存储空间文件(多级非空文件夹删除)

void DelFile(string unZipFilePath)//unZipFilePath第一次传递的是根目录名 { using (var store IsolatedStorageFile.GetUserStoreForApplication()) { if (store.DirectoryExists(unZipFilePath)) { …

重拾博客小序与杂思

寒假期间,条件所限,不能上网,也不能更新博客。寒假结束,懈怠了两个星期,打算重拾博客,继续更新。这学期(2012年2月到2012年8月)在专业学习上将突出几个集中研究的领域,在…

Ubuntu iso镜像文件写入U盘

Ubuntu iso镜像文件写入U盘 Ubuntu iso镜像文件写入U盘方法 分步指南 命令行输入 usb-creator-gtk如下:3、Device 选择插入的U盘 4、image 选择镜像文件 5、make startup disk

页面布局让footer居页面底部_网站各页面该如何布局关键词优化提升排名?

在网站优化中,最值得关注的一个事情就是关键词的布局,因为关键词的布局直接影响着网站的排名。那么怎样布局关键词才能提高页面和关键词的相关性,并提高网站排名呢?下面一起来看看。一、利用HTML标签布局关键词众所周知&#xff0…

Linux中如何配置IP

与网络相关的文件:1) /etc/sysconfig/network 设置主机名称及能否启动Network2) /etc/sysconfig/network-scripts/ifcfg-eth0设置网卡参数的文件3) /etc/modprobe.conf 开机时用来设置加载内核模块的文件4) /etc/resolv.conf 设置DNS IP(解析服务器&…

《DSP using MATLAB》Problem 5.7

代码&#xff1a; %% %% Output Info about this m-file fprintf(\n***********************************************************\n); fprintf( <DSP using MATLAB> Problem 5.7 \n\n);banner(); %% % -------------------------------------------…

一般将来时语法课教案_「英语语法」一般过去时用法技巧全解

大家好&#xff0c;我是教课蚪英语的张老师&#xff0c;今天我们来学习英语语法100讲的第一课&#xff0c;一般过去时&#xff01;一、首先我们了解一下什么是一般过去时&#xff1f;英语语法1. 概念&#xff1a;描述过去的状态或过去的动作。 在英语中&#xff0c;非现在的以前…

修改Ubuntu的启动logo

修改Ubuntu的启动logo 原文链接: https://my.oschina.net/jmjoy/blog/380262 内容: Plymouth splash screen is the initial splash screen at boot-up.Ubuntu 10.04 uses Plymouth instead of xsplash to manage the fancy boot graphics.If you want something different,y…

每周四十小时,你有多少是在为自己干活?

努力工作为什么&#xff1f;普通人不外乎希望加薪、升职&#xff0c;过的更好。 但是&#xff0c;要想达到这个目标&#xff0c;靠什么&#xff1f; 普通人当然要靠提升自己的能力和经验。 可是&#xff0c;你是不是已经发现&#xff0c;工作最踏实的&#xff0c;却未必取得最好…

在Linux下查看共享文件夹

一般情况&#xff0c;我们用到smbclient&#xff0c;常用方法所如下&#xff1a;#smbclient -L //IP地址或计算机名smbclient是samba的Linux客户端&#xff0c;在Linux机器上用来查看服务器上的共享资源&#xff0c;也可以向ftp一样&#xff0c;用户可以等里samba服务器&#x…

算法复杂度的定义

算法复杂度分为时间复杂度和空间复杂度。其作用&#xff1a; 时间复杂度是指执行算法所需要的计算工作量&#xff1b;而空间复杂度是指执行这个算法所需要的内存空间。&#xff08;算法的复杂性体现在运行该算法时的计算机所需资源的多少上&#xff0c;计算机资源最重要的是时间…