函数初识


函数
#1.函数的定义 def
#2.函数的调用
#3.函数的返回值 return
#4.函数的参数
#形参:
# 位置参数 : 必须传
# *args :可以接收任意多个位置参数
# 默认参数 : 可以不传
# **kwargs : 可以接收多个关键字参数
#实参:按照位置传参,按照关键字传参

#函数
#内置函数
#自定义函数 !!!!


函数返回值
#返回值的3种情况
# 没有返回值 —— 返回None
# 不写return
# 只写return:结束一个函数的继续
# return None —— 不常用
# 返回1个值
# 可以返回任何数据类型
# 只要返回就可以接收到
# 如果在一个程序中有多个return,那么只执行第一个
# 返回多个值
# 用多个变量接收:有多少返回值就用多少变量接收
# 用一个变量接收: 得到的是一个元组


函数参数
#形参和实参的概念
 
# def my_len(s):  #s--接收参数,形式参数,形参
#     i = 0
#     for k in s:
#         i += 1
#     return i  #返回值
#
# ret = my_len('金老板小护士')  #传递参数:传参,实际参数,实参
# ret = my_len([1,2,3,4,5])  #传递参数:传参
# print(ret)
#参数个数问题
#没有参数
#定义函数和调用函数时括号里都不写内容
#有一个参数
#传什么就是什么
#有多个参数
#位置参数,默认参数
# def my_sum(a,b):
#     print(a,b)
#     res = a+b  #result
#     return res
#
# ret = my_sum(1,2)
# print(ret)

函数形参和实参

#站在实参的角度上:
#按照位置传参
#按照关键字传参
#混着用可以:但是 必须先按照位置传参,再按照关键字传参数
# 不能给同一个变量传多个值

#站在形参的角度上
#位置参数:必须传,且有几个参数就传几个值
#默认参数: 可以不传,如果不传就是用默认的参数,如果传了就用传的
# def classmate(name,sex='男'):
#     print('%s : %s'%(name,sex))
#
# classmate('二哥')
# classmate('小孟')
# classmate('大猛')
# classmate('朗哥','女')

参数规则

#调用函数的时候
#按照位置传 : 直接写参数的值
#按照关键字: 关键字 = 值

#定义函数的时候:
#位置参数 : 直接定义参数
#默认参数,关键字参数 :参数名 = '默认的值'
#动态参数 : 可以接受任意多个参数
#参数名之前加*,习惯参数名args,
#参数名之前加**,习惯参数名kwargs
#顺序:位置参数,*args,默认参数,**kwargs
# def classmate(name,sex):
#     print('%s : %s'%(name,sex))
#
# classmate('二哥','男')
# classmate(sex='男',name = '二哥')# def classmate(name,sex='男'):
#     print('%s : %s'%(name,sex))
#
# classmate('二哥')
# classmate('朗哥',sex= '女')# def sum(*args):
#     n = 0
#     for i in args:
#         n+=i
#     return n
#
# print(sum(1,2))
# print(sum(1,2,3))
# print(sum(1,2,3,4))# def func(**kwargs):
#     print(kwargs)
#
# func(a = 1,b = 2,c =3)
# func(a = 1,b = 2)
# func(a = 1)

注:动态参数

# 动态参数有两种:可以接受任意个参数
#*args : 接收的是按照位置传参的值,组织成一个元组
#**kwargs: 接受的是按照关键字传参的值,组织成一个字典
#args必须在kwargs之前
# def func(*args,default = 1,**kwargs):
#     print(args,kwargs)
#
# func(1,2,3,4,5,default=2,a = 'aaaa',b = 'bbbb',)

划重点!!!

形参中参数种类的相对顺序不可变!!!

位置参数-->*args-->默认参数-->*kwargs   !!!

 

#动态参数的另一种传参方式

1、向*args中传列表

2、向*kwargs中传字典

方法:调用函数时在实参的序列前加*或**

# def func(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值。
#     print(args)
#
# func(1,2,3,4,5)
# l = [1,2,3,4,5]
# func(*l)  #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散# def func(**kwargs):
#     print(kwargs)
#
# func(a=1,b=2)
# d = {'a':1,'b':2} 
# func(**d)

#函数的注释

#函数的注释
# def func():
#     '''
#     这个函数实现了什么功能
#     参数1:
#     参数2:
#     :return: 是字符串或者列表的长度
#     '''
#     pass

 

转载于:https://www.cnblogs.com/aj-AJ/p/10807782.html

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

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

相关文章

MongoDB 初学

大致看了一点 MongoDB. 回忆一下,这个数据库有这样一些特征: Schema-less: 不需要预先定义 schema. 数据以 document 的方式存储,document 大致上相当于关系数据库中的一行记录。document 存放在 collection 中间(相当于关系数据库…

STL中的set/map

std::set/std::map底层实现的机制是红黑树,树中的数据是有序的,那么进行插入、删除、查找时的平均时间复杂读O(logN),以2为低的对数N。set相当于map中的key,map中的key不能有重复的并且按升序进行排序,如果结构体作为map中的key&a…

IoC容器Autofac(3) - 理解Autofac原理,我实现的部分Autofac功能(附源码)

上篇文章中,举了一个Autofac的简单例子,园友eflay反应: “虽然对autofac架构原理还是完全不懂,不过基本是明白ioc的用途了,会从已注册的类中找出符合接口的类来调用构造函数进行构造” 所以这篇文章,还是针对上次的例子…

STATS 4014 Advanced Data Science

STATS 4014Advanced Data ScienceAssignment 3Jono TukeSemester 1 2019CHECKLIST: Have you shown all of your working, including probability notation where necessary? : Have you given all numbers to 3 decimal places unless otherwise stated? : Have you include…

铁血规则:事件预订与取消预订

在编码的时候,我们经常预订某个事件来处理它,但很少取消事件的预订,这种做法可能导致程序在运行时出现一些异常。 如果你的某个用于处理事件的对象不是在运行期内永久存在的(比如,不是Singleton对象)&#…

MySQL中的insert ignore into讲解

最近工作中,使用到了insert ignore into语法,感觉这个语法还是挺有用的,就记录下来做个总结。 insert ignore into : 忽略重复的记录,直接插入数据。 包括两种场景: 1、插入的数据是主键冲突时 insert ignore into…

[置顶] 我的iOS作品

我的iOS作品 罗朝辉 ( http://blog.csdn.net/kesalin)CC 许可,转载请注明出处前言 做了好几年的 iOS 开发了,业余也零零散散地写了不少代码和博文教程。可惜一直都没有整理下,上次过年回家在张江广兰路把笔记本给丢了,损失惨重&am…

SSM框架搭建

SSM(SpringSpringMvcMybatis)项目环境搭建: 1、项目环境: jdk-1.8 tomcat-9.0 mysql-5.1.44 spring 5.1.6 mybatis 3.5.1 maven 3.5.42、项目目录结构: 3、pom.xml中引入的依赖&#xf…

MySQL字段值大小写敏感的解决方案

最近在用开源的MySQL 8.0开发本公司的产品,在客户现场建表时默认使用的是CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci 字符集导致与oracle的结果不一致,最后将建表时的字符集改为utf8mb3就可以了。 正常建表如下,默认使用的是CHARSETutf8mb4 …

制作Slider组件

利用as3,我们可以尝试制作一些有趣的组件,虽然现在已经有很多实用的组件,但是自己尝试写一下也是不错的。利用as3语法,借用了绘图Api我们尝试制作一下这个组件。因为我们不需要很强大的功能,对此我们只是需要选取其一部…

Android 编程下的四大组件之服务(Service)

服务(Service) 是一种在后台运行,没有界面的组件,由其他组件调用开始。Android 中的服务和 Windows 中的服务是类似的东西,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。 服务&#xf…

mysql ld preload过程

纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。 导读 本文将叙述通过二进制源码方式安装Percona-5.7.15,并进行快速启动。这边如何使用二进制版本安装Percona-5.7.15就不说了,和之前一模一样。 不做多余的事 1、解…

第六章实验报告(函数和宏定义实验)

C程序设计实验报告 一、实验项目: 1、编写由三角形三边求面积的函数 2、编写求N阶乘的函数 3、求两个整数的最大公约数 4、打印输出三角形 5、求500以内的所有亲密数对 姓名:廖云福 实验地点:教学楼514教室  实验时间:2019.4.30 一、实验目…

HttpRequest 与HttpWebRequest 有什么区别

System.Web.HttpRequest是封装浏览器对服务器的请求的,主要用在ASP.NET中,其中包括浏览器请求的网址,查询字符串数据或表单数据等等 而System.Net.HttpWebRequest则是用来简化网络请求的过程,从服务器上获取文件/结果的&#xff0…

mysqld_safe启动脚本源码阅读与分析

原文链接:https://blog.csdn.net/weixin_39844426/article/details/113422137 前几天读了下mysqld_safe脚本,个人感觉还是收获蛮大的,其中细致的交代了MySQL数据库的启动流程,包括查找MySQL相关目录,解析配置文件以及…

统计文章中字母出现频率

代码位置:https://github.com/Evilleon/article-vocabulary/letter转载于:https://www.cnblogs.com/YXSZ/p/10809930.html

mapreduce shuffle过程问答

通过hadoop权威指南学习hadoop,对shuffle过程一直很疑惑,经过查看网上多个帖子,最终 完成此篇问答总结。 1.什么叫shuffle 从map任务输出到reducer任务输入之间的过程就叫做shuffle 2.每个map任务都有对应的缓存吗?默认是多少&…

Oracle为JDK 8寻求社区参与

据InfoQ报道,随着Java 7功能的日益完备,Oracle正在将注意力转向JDK 8,Java平台组的首席架构师Mark Reinhold正在寻求Java社区的参与: 我们已经知道JDK 8中会有一些大家伙,同时也会为其他大大小小的特性留下空间。因此需…

ubuntu下安装pt-query-digest

最近在改造开发MySQL时要使用pt-query-digest工具分析性能问题,一路遇到了一些问题,记录下来便于日后翻看。 系统: #45~20.04.1-Ubuntu SMP Mon Apr 4 09:38:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux 在安装过程中遇到了很多的问题&#…

S2-016、S2-017

前言 由于S2-016、S2-017出现的原因时相同的,只是由于poc不一样,造成了不同的攻击。S2-016是RCE,S2-017是开发型重定向漏洞。这里将两个漏洞放一起分析。另外“Struts2系列起始篇”是我整各系列的核心,希望大家能花些时间先看看。…