python基础整理笔记(三)
一. python的几种入参形式:
1.普通参数:
普通参数就是最一般的参数传递形式。函数定义处会定义需要的形参,然后函数调用处,需要与形参一一对应地传入实参。
示例:
def f(a, b):
print(a,b)
f(1, 2)
2. 指定参数:
指定参数就是在函数调用时,给传入的实参加上其对应的形参的参数名,这样实参的顺序就可以不用和形参完全一一对应的顺序。
示例:
def f(a, b):
print(a, b)
f(b=1, a=2)
3. 默认参数:
默认参数是在函数的形参处直接设定好一个参数的值,在函数调用的时候,可以不传入对应这个形参的实参,当不传入参数时,会直接取这个设定的默认值。当传入时,会用传入的值。
此外要注意,有默认值的参数,需要放在所有无默认值的参数之后。
示例:
def f (a, b=1, c=2):
print(a,b,c)
f(1,2)
4. 动态参数:
动态参数就是可以在函数的形参处不指定具体的名称与个数,在函数被调用时,传入的实参皆可在函数中获得。
动态参数有两种形式,一种以列表的形式,一种以字典的形式。
(1) 当以列表形式的时候,在函数调用时,实参的传递与普通的方式类似,直接传入;形参获取到的是一个列表的形式,元素为传入的每个实参。
示例:
def f(*args):
for i in args:
print(i)
f(1,23,3)
(2) 当以字典形式时,在函数调用时,实参传递类似制定参数的方式;形参获得的是一个字典。
示例:
def f(**kargs):
for k, v in kargs.items():
print(k, v)
f(k1=1, k2=2)
(3) 此外两种形式也可以一起使用,并且也可以和其他类型如普通参数,有默认值的参数一起使用。
此外需要注意的是,列表形式的动态参数需要放在普通参数和默认值参数之后,字典形式的动态参数,需要放在所有类型的参数之后。
示例:
def f(a, b=1, *args, **kargs):
print(a,b)
for i in args:
print(i)
for k, v in kargs.items():
print(k, v)
f(1,2,22,33,k1=4,k2=5)
(4) 另外还有种向函数传递默认参数的方法,即在函数调用时,在传入的列表前加*,在传入的字典前加**,这样被传入的参数就不会被当做是一整个列表或字典,而是动态参数。
示例:
a = [1,2]
k = {'k1':1, 'k2':2}
def f(*args, **kargs):
for i in args:
print(i)
for k, v in kargs.items():
print(k, v)
f(*a, **k)
二. python参数的引用传递
虽然python中并没有类似C语言中的显示支指出传递参数还是引用或者指针这种类似设计,但实际上,当python函数的入参是list, tuple, dict, set, deque等容器时候,传入的其实是引用即其本身,而非复制的结果。
在函数内部修改这些入参后,操作的即传入的实参的内存,所以即使出了函数外部,实参也被改变了。
(1)传入list的示例:

(2)传入dict的示例:

(3)传入set的示例:

(4)另外需要注意的是,如果在函数内部,将传入的容器类参数做一个重新赋值,那么当出了函数以后,原版的实参值并不变。这是因为在函数内部赋值,其实把函数的形参指向了一块新的内存,原本的容器值并没有改变,等到出了作用域,自然会发现值没变。示例:

三. set的常用方法与时间复杂度
set是一个无需不重复的元素集合,此外与list和tuple的主要区别是,支持方便直接地做一些集合运算,如:
并集、交集、差集、判断是否子集、判断是否父集。当然也支持增加与删除元素等操作。
时间复杂度如下:

python基础整理笔记(三)的更多相关文章
- python基础整理笔记(九)
一. socket过程中注意的点 1. 黏包问题 所谓的黏包就是指,在TCP传输中,因为发送出来的信息,在接受者都是从系统的缓冲区里拿到的,如果多条消息积压在一起没有被读取,则后面读取时可能无法分辨消 ...
- python基础整理笔记(四)
一. python 打开文件的方法 1. python中使用open函数打开文件,需要设定的参数包括文件的路径和打开的模式.示例如下: f = open('a.txt', 'r+') 2. f为打开文 ...
- python基础整理笔记(一)
一. 编码 1. 在python2里,加载py文件会对字符进行编码,需要在文件头上的注释里注明编码类型(不加则默认是ascII). # -*- coding: utf-8 -*- print 'hel ...
- python基础整理笔记(七)
一. python的类属性与实例属性的注意点 class TestAtt(): aaa = 10 def main(): # case 1 obj1 = TestAtt() obj2 = TestAt ...
- python基础整理笔记(五)
一. python中正则表达式的一些查漏补缺 1. 给括号里分组的表达式加上别名:以便之后通过groupdict方法来方便地获取. 2. 将之前取名为"name"的分组所获得的 ...
- python基础整理笔记(二)
一. 列表 1. 创建实例: a = [1,2,3] b = list() 2. 主要支持的操作及其时间复杂度如下: 3. 其他 python中的列表,在内存中实际存储的形式其实是分散的存储,比较类似 ...
- python基础整理笔记(八)
一. python反射的方式来调用方法属性 反射主要指的就是hasattr.getattr.setattr.delattr这四个函数,作用分别是检查是否含有某成员.获取成员.设置成员.删除成员. 此外 ...
- python基础整理笔记(六)
一. 关于hashlib模块的一些注意点 hashlib模块用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD ...
- python基础篇(三)
PYTHON基础篇(三) 装饰器 A:初识装饰器 B:装饰器的原则 C:装饰器语法糖 D:装饰带参数函数的装饰器 E:装饰器的固定模式 装饰器的进阶 A:装饰器的wraps方法 B:带参数的装饰器 C ...
随机推荐
- Vs打包工程 错误: Unable to update the dependencies of the project (转)
Setup Project 错误: Unable to update the dependencies of the project 在VS2010中编译包含安装工程的解决方案提示错误:Unable ...
- hbase运行shell时ERROR:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing 的解决办法
这个问题困扰了我一天多的时间,百度搜索的前几条的答案也是很扯淡的,说什么把/etc/hosts文件下的127.0.1.1改成127.0.0.1就行了,我也只能呵呵了.今天早上起得很晚,中午迪哥请我们去 ...
- JS-改变页面的颜色(二)
需求:点击页面的按钮,改变页面的颜色 思路:一先画出最简单的页面,二想办法获取页面的body节点,三想办法修改body节点的背景颜色属性,四通过一个方法获取随机的颜色值 和第一个例 ...
- 国际化(i18n)
一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...
- MSsql 服务器之间远程及其链接查询
先指定端口1433(SQL,协议里面设置) 然后启用 菜单-程序-外围服务应用配置-服务和连接时外围应用配置 试试远程连接 成功连接OK 下面示例链接服务器.上面远程是必须走的一步动作. --创建链接 ...
- Inside The C++ Object Model - 02
前言 - 什么是C++对象模型 C++对象模型包括2个方面的含义: 1.语言中直接支持面向对象程序设计的部分 2.对于各种(面向对象)支持的底层实现机制. 无论是什么语言,都需要转换为汇编.很多面向对 ...
- JDBC中如何获取SUM函数返回的结果
代码如下: ResultSet rs = stmt.executeQuery("SELECT sum() from...."); int keyValue = -1; if (rs ...
- 计算机网络 学习笔记-传输层:TCP协议简介
概述: TCP传输前先要建立连接 TCP在传输层 点对点,一条TCP只能连接两个端点 可靠传输.无差错.不丢失.不重复.按顺序 全双工 字节流 TCP报文段 TCP报文段的报头前20字节是固定的,后面 ...
- jenkins+findbugs
1) Jenkins安装findbugs插件 具体安装步骤:在主页面进入系统管理 选择插件管理 在过滤器中找出要安装的插件,并进行安装(Static Analysis Utilities.findb ...
- 在bootstrap ace样式框架上修改的后台管理型模板(Tab页后台管理模板)
后台管理模板开始用frameset布局,但是有时候会遮挡比如上面导航或者左边导航的二级三级弹出菜单,因为宽度被限制了,所以有时候就用easyui或者ext的,但是样式不好看,然后看到了bootstra ...