Python3函数和代码复用

函数的定义

def 函数名([参数列表]):'''注释'''函数体

注意事项

  • 函数形参不需要声明类型,可以使用return语句在结束函数执行的同时返回任意类型的值,函数返回值类型与return语句返回表达式i的类型一致

  • 即使该函数不需要接受任何参数,也必须保留一堆空的圆括号

  • 函数体相对于def关键字必须保持一定的空格缩进

  • 无论return语句出现在函数的什么位置,一旦得到执行将直接结束函数的执行

  • 如果函数没有return语句、有return语句但是没有执行到、执行了不返回任何值的return语句,解释器都会认为该函数以return None结束,即返回空值

  • 调用函数时向其传递实参,将实参的引用传递给形参,但是在将要修改形参的时候将会复制一份形参,而不会改变实参。但是如果实参是可变序列,则对形参对应序列的修改将会修改实参的序列
    在这里插入图片描述

  • 实参和形参的顺序必须严格一致,而且实参和形参的数量必须相同

  • 按照形参名输入实参,此时参数之间的顺序可以任意调整
    在这里插入图片描述

  • 默认值参数右边都不能再出现没有默认值的普通位置参数

  • 调用函数时是否为默认参数传递实参是可选的,即是否传入参数都可以

  • 可以使用函数名.__defaults__随时查看函数所有默认值参数的当前值

  • 多次调用函数并且不为默认值参数传递值时,默认值参数只在定义时进行一次解释和初始化,对于列表、字典这样可变类型的默认值参数,这一点可能会导致很严重的逻辑错误。
    在这里插入图片描述

  • 可变长参数:星号加上参数可以用来接受多个实参并将其放入一个元组中
    在这里插入图片描述

  • 可变长多参数:两个星号加参数可以用来接受多个关键参数并将其返给字典中
    在这里插入图片描述

  • 位于*parameter或单独一个*之后的所有参数都只能以关键词参数的形式进行传值,不接受其他任何形式的传值。

  • 传递参数时的序列解包:在实参序列前加一个星号将其捷豹,然后传递给多个单变量形参
    在这里插入图片描述

  • 如果函数实参是字典,可以在前面加上两个星号进行解包,等价于关键实参
    在这里插入图片描述

  • 我们可以标注函数参数和返回值类型,可是这个标注如果我们自己不写断言的话没什么用
    在这里插入图片描述

  • 局部变量和全局变量:可以在函数体中直接使用全局变量,前提是不进行更改,一旦进行更改将会创建局部变量
    在这里插入图片描述

  • 如果要在函数体中使用全局变量需要在函数体中进行声明

全局变量:global

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文说尽C++赋值运算符重载函数(operator=)

http://www.cnblogs.com/zpcdbky/p/5027481.html在前面:关于C的赋值运算符重载函数(operator),网络以及各种教材上都有很多介绍,但可惜的是,内容大多雷同且不全面。面对这一局面,在下在整合各种资源及融入个人理解的基…

Python a和a[:]的区别

简单来讲a[:]是深复制,a是浅复制,相当于赋值a的话是赋值了指针,赋值a[:]相当于复制了a对应的那段空间 例如: a [1,1,1,1,1,1]for x in a:if x1:a.remove(x)print(a)运行结果: remove操作是移除序列中第一个x元素。…

Linux系统【二】exec族函数及应用

文件描述符 文件描述符表是一个指针数组,文件描述符是一个整数。 文件描述符表对应的指针是一个结构体,名字为file_struct,里面保存的是已经打开文件的信息 需要注意的是父子进程之间读时共享,写时复制的原则是针对物理地址而言…

白话C++系列(27) -- RTTI:运行时类型识别

http://www.cnblogs.com/kkdd-2013/p/5601783.htmlRTTI—运行时类型识别 RTTI:Run-Time Type Identification。 那么RTTI如何来体现呢?这就要涉及到typeid和dynamic_cast这两个知识点了。为了更好的去理解,那么我们就通过一个例子来说明。这个…

使用头文件的原因和规范

原因 通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只 要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库 功能,而不必关心接口怎么实现的。编译器会从库中提取相应…

转圈踢人问题

https://www.cnblogs.com/lanxuezaipiao/p/3339603.html 有N个人围一圈依次报数,数到3的倍数的人出列,问当只剩一个人时他原来的位子在哪里? 解答:经典的转圈踢人问题,好吧专业一点,约瑟夫环问题&#xff0…

Python3常用数据结构

Python3中有三种组合数据类型,分别为: 序列类型:字符串(str)、元组(tuple)、列表(list)集合类型:集合(set)映射类型:字典…

TCP第四次挥手为什么要等待2MSL

当客户端进入TIME-WAIT状态的时候(也就是第四次挥手的时候),必须经过时间计数器设置的时间2MSL(最长报文段寿命)后,才能进入关闭状态,这时为什么呢??? 这最主要是因为两个理由: 1、为了保证客户…

计算机网络【一】概述+OSI参考模型

网络概述 局域网:覆盖范围小(100m以内),自己花钱买设备,带宽固定(10M,100M,1000M),自己维护(接入层交换机直接连接电脑、汇聚层交换机直接连接接入层交换机) 广域网:距离远,花钱买服务,租带宽&…

单链表逆序的多种方式

https://www.cnblogs.com/eniac12/p/4860642.htmltemplate<class T> void List<T>::Inverse() {if(first NULL) return;LinkNode<T> *p, *prev, *latter; p first->link;   // 当前结点prev NULL;   // 前一结点l…

socket编程 -- epoll模型服务端/客户端通信的实现

https://blog.csdn.net/y396397735/article/details/50680359 本例实现如下功能&#xff1a; 支持多客户端与一个服务端进行通信&#xff0c;客户端给服务端发送字符串数据&#xff0c;服务端将字符串中小写转为大写后发送回客户端&#xff0c;客户端打印输出经转换后的字符串。…

Python3 面向对象程序设计

类的定义 Python使用class关键字来定义类 class Car:def infor(self):print("This is a car") car Car() car.infor()内置方法isinstance()来测试一个对象是否为某个类的实例 self参数 类的 所有实例方法都有一个默认的self参数&#xff0c;并且必须是方法的第一…

计算机网络【二】物理层基础知识

计算机网络的性能 速率&#xff1a;连接在计算机网络上的主机在数字信道上传送数据位数的速率&#xff0c;也成为data rate 或bit rate&#xff0c;单位是b/s,kb/s,Mb/s,Gb/s。 我们平时所讲的宽带的速度是以字为单位的&#xff0c;但是实际中应用一般显示的是字节 &#xff0…

Linux网络编程——tcp并发服务器(多进程)

https://blog.csdn.net/lianghe_work/article/details/46503895一、tcp并发服务器概述一个好的服务器,一般都是并发服务器&#xff08;同一时刻可以响应多个客户端的请求&#xff09;。并发服务器设计技术一般有&#xff1a;多进程服务器、多线程服务器、I/O复用服务器等。二、…

求序列第K大算法总结

参考博客&#xff1a;传送门 在上面的博客中介绍了求序列第K大的几种算法&#xff0c;感觉收益良多&#xff0c;其中最精巧的还是利用快速排序的思想O(n)查询的算法。仔细学习以后我将其中的几个实现了一下。 解法 1&#xff1a; 将乱序数组从大到小进行排序然后取出前K大&a…

Linux网络编程——tcp并发服务器(多线程)

https://blog.csdn.net/lianghe_work/article/details/46504243tcp多线程并发服务器多线程服务器是对多进程服务器的改进&#xff0c;由于多进程服务器在创建进程时要消耗较大的系统资源&#xff0c;所以用线程来取代进程&#xff0c;这样服务处理程序可以较快的创建。据统计&a…

计算机网络【三】物理层数据通信

物理层传输媒介 导向传输媒体&#xff0c;比如光纤和铜线 双绞线&#xff08;屏蔽双绞线STP 五屏蔽双绞线UTP&#xff09;电线扭曲在一起可以降低互相之间的电磁干扰 同轴电缆 (50欧姆的基带同轴电缆&#xff0c;75欧姆的宽带同轴电缆) 10M和100M网络只使用了四根线&#xf…

02_算法分析

02_算法分析 0.1 算法的时间复杂度分析0.1.1 函数渐近增长概念&#xff1a;输入规模n>2时&#xff0c;算法A1的渐近增长小于算法B1 的渐近增长随着输入规模的增大&#xff0c;算法的常数操作可以忽略不计测试二&#xff1a;随着输入规模的增大&#xff0c;与最高次项相乘的常…

Linux网络编程——I/O复用之select详解

https://blog.csdn.net/lianghe_work/article/details/46506143一、I/O复用概述I/O复用概念&#xff1a;解决进程或线程阻塞到某个 I/O 系统调用而出现的技术&#xff0c;使进程不阻塞于某个特定的 I/O 系统调I/O复用使用的场合&#xff1a;1.当客户处理多个描述符&#xff08;…

Linux网络编程——tcp并发服务器(I/O复用之select)

https://blog.csdn.net/lianghe_work/article/details/46519633与多线程、多进程相比&#xff0c;I/O复用最大的优势是系统开销小&#xff0c;系统不需要建立新的进程或者线程&#xff0c;也不必维护这些线程和进程。代码示例&#xff1a;#include <stdio.h> #include &l…