13 python初学(函数)

函数:

  1. 概念:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
  2. 创建: def
  3. 函数名命名规范: a. 必须以下划线或字母开头 b. 区分大小写 c.不能是保留字
  4. 参数(形参和实参):调用时传的参数是实参,方法里写的接收的变量是形参

必备参数:

# name,age 是必备参数;调用此函数时必须按顺序传入值。
def print_info(name, age):

 

关键字参数:

# 调用函数时可以不按顺序传入参数,但必须说明关键字
print_info(age=17, name='su')

 

默认参数:

# 声明参数时指定一个默认值:sex='female',这样在调用该函数时如果不传参数值就会使用默认值。默认参数必须放在所有参数后面(不包括不定长参数)
# 默认参数后面如果跟了不定长参数,那么会先把第一个参数值给默认参数
def print_info(name, age, sex='female'):passprint_info('lily', 18) # 指定默认性别为女 print_info('xiaoming', 18, 'male') #传入参数:性别为男

 

不定长参数:

 

 

# 不定长参数有两种:一种是不会给传入的参数命名,第二种是传入的参数有命名。 *args 放左边, **kwargs 放右边# 第一种
def add(*args):   # 不定长参数一,*args不会给传入的参数命名,声明时不会命名print(args)sum = 0for i in args:  # args = (1, 2, 3, 4, 5),元组类型sum += iprint(sum)add(1, 2, 3, 4, 5)#第二种: **kwargs 来接收超出的命名参数,是一个字典类型
def print_info(name, age, **kwargs):print(kwargs)print('name: %s' % name)print('age is: %d'% age)for i in kwargs:print('%s: %s' % (i, kwargs[i]))print_info('lily', 18, sex='female', locate='beijing',)

 

5. return:

作用:a. 结束函数 b.返回某个对象

如果函数没有 return,会默认 return 一个 None

如果return 多个对象,那么python 会帮我们把多个对象封装成一个元组返回

 

def test(a, b):return a+b, a*bprint(test(1, 2))>>> (3, 2)

 

 

6. 定义域:

built_in , global, enclosing, local

局部作用域如果要修改全局变量,需要加 global :   global count

global 关键字声明的变量必须在全局作用域上,不能在嵌套作用域上。

当要修改嵌套作用域(enclosing)中的变量,需要使用 nonlocal 关键字:nonlocal count

 

变量查找顺序:LEGB,作用域局部>外层作用域>当前模块中的全局>python内置作用域

只有模块、类及函数才能引入新作用域

对于一个变量,内部作用域先声明就会覆盖外部变量,不声明直接使用,就会使用外部作用域的变量

内部作用域要修改外部作用域变量的值时,全局变量要使用 global 关键字,嵌套作用域变量要使用 nonlocal 关键字,nonlocal python3 新增的关键字,有了这个关键字,就能完美实现闭包了  

7. 作用: a.减少重复代码 b. 方便修改,便于扩展 c. 保持代码一致性

转载于:https://www.cnblogs.com/mlllily/p/10252715.html

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

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

相关文章

[Leedcode][JAVA][第146题][LRU][哈希表][双向链表]

【问题描述】 LFU 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数&…

wdcp 升级 php7,SugarHosts糖果主机升级硬盘流量 且PHP默认版本升级至PHP7.2

我们对于糖果主机SugarHosts商家应该还算是比较熟悉的,早期老左还没接触云服务器的时候建站都是用的虚拟主机,那时候我们知道有Bluehost、Justhost、Hostmonster等,当然还有糖果主机那时候也算是比较流行的主机商其主要是支持简体中文和支付宝…

前后端不分离与分离

前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果是由后端控制,由后端渲染页面或重定向,后端需要控制前端的展示,前端与后端的耦合度很,这种应用模式比较适合纯网页应用,但是当后端对接APP时&a…

java学习(155):序列化

import javax.imageio.IIOException; import java.io.*; import java.util.Date;//字符输入流 public class FileManagerChar {public static void readCharFile(File file){FileReader fileReadernull;//文本输入流if(file.exists()){try {fileReader new FileReader( file )…

matlab2008报错,simulink的.mdl的文件在matlab2008a中打开报错,高手指点下

哈哈,不同版本字体的问题。运行下边的命令:bdclose all; set_param(0,CharacterEncoding, ISO-8859-1)如果不行再换一下字体。可以参照一下命令的介绍,能够使用联机帮助,这是很关键的。另外,不同的版本还会出现模型问题…

[Leedcode][JAVA][第445题][链表][栈]

【问题描述】445. 两数相加 II 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改…

Leetcode143. Reorder List重排链表

给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 给定链表 1->2->3->4, 重新排列为 1->4-&g…

java学习(156):反序列化

import javax.imageio.IIOException; import java.io.*; import java.util.Date;//字符输入流 public class FileManagerChar {public static void readCharFile(File file){FileReader fileReadernull;//文本输入流if(file.exists()){try {fileReader new FileReader( file )…

[Leedcode][JAVA][第355题][设计推特][面向对象][哈希表][链表][优先队列]

【问题描述】355 设计推特 设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文。你的设计需要支持以下的几个功能:postTweet(userId, …

java中sofa并发访问,云上的日子:用块存储、文件存储还是对象存储?

当今最流行的存储类型是哪种?答案毫无疑问是:块存储、文件存储还有对象存储!作为伴随着云计算兴起的存储类型,这三种存储绝对是这个时代的存储明星,用C位出道来形容再合适不过。那么,在云上的日子,究竟该用块存储、文…

java学习(157):线程的引入

//线程 public class test102 extends Thread{public void run(){while (true){System.out.println("我是线程1"this.getName());try {Thread.sleep( 1000 );}catch (InterruptedException e){e.printStackTrace();}}} }//线程 public class test103 extends Thread{…

【读书笔记】计算机是怎样跑起来的

2018年底读的,才整理完笔记。说说感想吧,每个章节虽然都是基础的知识,但是每次读起来还是收获颇多,很多自己说不清楚或者不理解的概念,感觉在认识层面有些结成网了。对于每个方面的专业知识,要按需深入学习…

[剑指offer][JAVA]面试题[第23题][合并K个排序链表][分治][优先队列]

【问题描述】23.合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [1->4->5,1->3->4,2->6 ] 输出: 1->1->2->3->4->4->5->6【解答思路】 1. 两两合并 public class Soluti…

源码安装的php如何启动脚本,PHP源码编译安装管理常用脚本

#!/bin/sh# 编译安装管理PHPAppphpAppNamePHPAppBase/AppAppDir$AppBase/$AppAppProg$AppDir/sbin/php-fpmAppIni$AppDir/etc/php.iniAppConf$AppDir/etc/php-fpm.confExtensionDir$($AppDir/bin/php-config --extension-dir)AppSrcBase/App/srcAppSrcFile$App-*.tar.*AppSrcDi…

java学习(158):线程的常用方法yield,优先级

//线程 public class test102 extends Thread{public void run(){while (true){System.out.println("我是线程1"this.getName());try {Thread.sleep( 1000 );}catch (InterruptedException e){e.printStackTrace();}}} }//线程 public class test103 extends Thread{…

[Leedcode][JAVA][第542题][01矩阵][BFS]

【问题描述】542. 01 矩阵 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 : 输入: 0 0 0 0 1 0 1 1 1 输出: 0 0 0 0 1 0 1 2 1 注意: 给定矩阵的元素个数不超过 10000。 给定矩阵中至少有一个元素是 0。 矩阵…

php where or,php – laravel中whereOr和orWhere之间的区别

我在Laravel的代码中使用whereOr和orWhere都可以,但有时会产生不同的结果$user_query User::select( users.id, users.username,users.first_name,users.last_name, users.photo )->where(users.status,1)->where(users.id,!,$id)->where(users.username,like,%.$sea…

java学习(159):两个线程共同完成1到100计算

//利用两个线程实现1到100的计算 public class MyRannable implements java.lang.Runnable{private Thread th_0;private Thread th_2;int sum0;//存储累加和的结果int i1;public void run(){String thNameThread.currentThread().getName();//获取当前线程的名字while (i<…

约瑟夫问题(Josephus Problem)的两种快速递归算法

参考&#xff1a;http://haoyuanliu.github.io/2016/04/18/Josephus/ 转载于:https://www.cnblogs.com/xiaoshayu520ly/p/10263113.html

java学习(160):interrupt方法

import java.util.PrimitiveIterator;public class Classroon implements Runnable {private Thread student;//学生线程private Thread teacher;//老师线程public Classroon(){student new Thread( this,"小迷糊" );teacher new Thread( this,"大教授" …