python之函数学习
#!/usr/bin/env python
#
# ===============================================
# 位置参数说明
# 位置参数 通过参数传递的位置来决定 def echo1(x, y):
print('x = {0}'.format(x))
print('y = {0}'.format(y))
return x + y # res1 = echo1(2, 6)
# print(res1) # ===============================================
# 关键字参数
# 关键字参数 通过参数名称来决定
# 同样引用上面定义的函数,这次直接先赋值y值,然后赋值x
# 关键字参数是指直接使用参数名称进行赋值 # res2 = echo1(y=8, x=4)
# print(res2) # ===============================================
# 混合使用: 关键字 + 位置参数
# 关键字参数必须在位置参数之后 # res3 = echo1(10, y=20)
# print(res3) # =============================================== # 可变参数
# 可变位置参数 def sumn(list1):
res = 0
for x in list1:
res += x
print(x)
print(res) # sumn([1, 2, 3, 4])
# sumn([4, 3, 2, 1]) def func_change(*args):
res = 0
print(args)
for x in args:
res += x
print(res) # func_change(1, 2, 3, 4, 5) # ===============================================
# 默认参数
# 当默认参数和关键字参数一起使用的时候,世界都是美好的
# 默认参数必须在关键字参数之后 def func_default(x, y=10):
print('x/y is {0}/{1}'.format(x, y)) # func_default(20) # ===============================================
# 可变关键字参数 def print_args(**kwargs):
for k, v in kwargs.items():
print('key: {0} ===> value : {1}'.format(k, v)) # print_args(x=100, y=200, z=300) # 可变参数函数在定义的时候,就决定了参数是位置参数还是关键字参数 def print_all(*args, **kwargs):
for x in args:
print('POS:{0}'.format(x))
for k, v in kwargs.items():
print('Key: {0} ==> Valus: {1}'.format(k, v)) # print_all(1, 2, 3, a=4, b=5) def print_he(x, y, *args, **kwargs):
print('x = {0}'.format(x))
print('y = {0}'.format(y))
for i in args:
print('args: x = {0}'.format(i))
for k, v in kwargs.items():
print('{0} => {1}'.format(k, v)) # print_he([1,2,3],4, 5,6,7, kk =5) # 参数传入规则:
# 非默认非可变参数, 可变位置参数,可变关键字参数
# 默认参数不要和可变参数放到一起 # 参数解包 def add(x, y):
print('x is {0}'.format(x))
print('y is {0}'.format(y))
print('Count x + y = {0}'.format(x + y)) # lst = [1, 2]
# add(lst[0], lst[1])
# add(*lst) # 字典参数传入,函数解包 def func_dict(**kwargs):
for k, v in kwargs.items():
print('Key: {0} --> {1}'.format(k, v)) # dict1 = {'a':1, 'b':2, 'c':3}
# func_dict(**dict1) # 默认参数的坑 def fn(lst=[]):
lst.append(1)
print(lst) # fn()
# 执行完成后lst指向会变成1
# fn()
# 这次执行时候lst=[1]会覆盖默认值[]
# 此次返回[1, 1]
# fn()
# 这次执行时候lst=[1, 1]会覆盖默认值[]
# 此次返回[1, 1, 1] # 解决方案 # 先给lst赋值为None,判断lst如果是None
# 则新创建列表,然后再append
# 如果lst在调用函数的时候填写了默认值, def fn1(lst=None):
if lst is None:
lst = []
lst.append(1)
print(lst)
python之函数学习的更多相关文章
- python的函数学习2
名称空间 用来存放名字的地方,有三种名称空间:内置名称空间,全局名称空间,局部名称空间. 比如执行test.py: python test.py .python解释器先启动,因而首先加载内置名称空间 ...
- python时间函数学习
格式化当前日期: import time print time.strftime('%Y-%m-%d') 获取一天前的日期: import datetime import time onedayago ...
- .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]
今天主要记录,Python中函数的使用以及异常处理. 一.函数: 1.函数的创建以及调用. def Add(val1,val2): return val1+val2; print Add( ...
- python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法
python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...
- Python快速入门学习笔记(三)——函数的定义与调用
定义函数 Python中定义函数的格式为: def fun([参数列表]): ... 函数在执行到return语句时结束,并将结果返回.如果没有return语句,函数执行完毕后返回None. 例: d ...
- Python函数学习——作用域与嵌套函数
全局与局部变量 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数. 当全局变量与局部变量同名时,在定义局部变量的函数内 ...
- Python函数学习遇到的问题
Python函数的关键字参数 Python函数独立星号(*)分隔的命名关键字参数 Python函数中的位置参数 Python中对输入的可迭代对象元素排序的sorted函数 Python中函数的参数带星 ...
- PyQt(Python+Qt)学习随笔:窗口对象尺寸调整相关的函数resize、showMaximized、showNormal、showMinimized
resize(width,height) resize可以直接调整窗口的尺寸,调整效果类似于鼠标直接拉伸或缩小窗口,但窗口大小的最大值.最小值受窗口的sizePolicy.sizeHint.minim ...
- Python 装饰器学习
Python装饰器学习(九步入门) 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- c ...
随机推荐
- 【easyui】之treegrid的分页
easyui官网给的treegrid的分页是相当的复杂,我们来简化一下! 首先treegrid 分页和 datagrid一样需要设置一系列参数! 如下: depTreeGrid=$("#de ...
- 初探 discuz
测试: vim /etc/hosts ##ip地址转换 修改windows 的配置文件,写字板打开 vim /usr/local/apache/conf/httpd.conf vim /u ...
- vim高亮设置
vim高亮设置 前提: 查看vim是否完整安装 rpm -qa | grep vim 若完整安装,则会出现如下相关信息 vim-filesystem-7.4.629-5.el6.x86_64 vim- ...
- Hadoop基本开发环境搭建(原创,已实践)
软件包: hadoop-2.7.2.tar.gz hadoop-eclipse-plugin-2.7.2.jar hadoop-common-2.7.1-bin.zip eclipse jdk1.8 ...
- vc release模式设置断点调试
在VC release模式做如下设置:在 工程->属性->c/c++->常规->调试信息格式选择 -> 程序数据库(/Zi) 在 工程->属性->链接器-&g ...
- mac环境下mentohust锐捷登录配置
今天测试react native嵌入原生项目,账号流量恰好用完,想换同学账号却不会更改配置,以至于被网络弄得头疼了一中午.于是,好好研究了一下这个mentohust 一.需要下载的文件 我已经全部整理 ...
- 使用JS实现手风琴效果
想要实现简单的手风琴切换效果,需要使用JS实现,如下是使用javascript源码实现,后续会更新使用jQuery实现. 1. 先进行简单的布局:我们可以再ul下添加几个li实现html的简单布局,再 ...
- 自定义分页Gridview中Excel导出
先上图,如图所示导出所有查询出的数据 用的是AspNetPager分页控件,这个导出方法,不受分页和gridview列中数据的约束,可以导出您想导出的数据 首先前台页面代码,lblink即为导出exc ...
- Java的JDBC原生态学习以及连接池的用法
JDBC是什么 JDBC(Java Data Base Connectivity)是Java访问数据库的桥梁,但它只是接口规范,具体实现是各数据库厂商提供的驱动程序(Driver). 应用程序.JDB ...
- html、css、js实现轮播图
2017-03-13 今天把轮播图的知识1过了一下,写了一个比较简单的轮播图,给大家参考一下. 查看具体的效果点击这个链接 : http://gjhnstxu.me/%E8%BD%AE%E6%92%A ...