#!/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之函数学习的更多相关文章

  1. python的函数学习2

    名称空间 用来存放名字的地方,有三种名称空间:内置名称空间,全局名称空间,局部名称空间. 比如执行test.py: python test.py .python解释器先启动,因而首先加载内置名称空间 ...

  2. python时间函数学习

    格式化当前日期: import time print time.strftime('%Y-%m-%d') 获取一天前的日期: import datetime import time onedayago ...

  3. .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]

       今天主要记录,Python中函数的使用以及异常处理. 一.函数:    1.函数的创建以及调用. def Add(val1,val2): return val1+val2; print Add( ...

  4. python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法

    python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...

  5. Python快速入门学习笔记(三)——函数的定义与调用

    定义函数 Python中定义函数的格式为: def fun([参数列表]): ... 函数在执行到return语句时结束,并将结果返回.如果没有return语句,函数执行完毕后返回None. 例: d ...

  6. Python函数学习——作用域与嵌套函数

    全局与局部变量 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数. 当全局变量与局部变量同名时,在定义局部变量的函数内 ...

  7. Python函数学习遇到的问题

    Python函数的关键字参数 Python函数独立星号(*)分隔的命名关键字参数 Python函数中的位置参数 Python中对输入的可迭代对象元素排序的sorted函数 Python中函数的参数带星 ...

  8. PyQt(Python+Qt)学习随笔:窗口对象尺寸调整相关的函数resize、showMaximized、showNormal、showMinimized

    resize(width,height) resize可以直接调整窗口的尺寸,调整效果类似于鼠标直接拉伸或缩小窗口,但窗口大小的最大值.最小值受窗口的sizePolicy.sizeHint.minim ...

  9. Python 装饰器学习

    Python装饰器学习(九步入门)   这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- c ...

随机推荐

  1. 基于 GCDAsyncSocket,简单实现类似《你猜我画》的 socket 数据传输

    一.前言 Socket Socket 是对 TCP/IP 协议的封装,其中IP协议对应为网络层,TCP 协议对应为传输层,而我们常用的HTTP协议,是位于应用层,在七层模型中HTTP协议是基于 TCP ...

  2. 简洁、轻量的前端UI框架 - Hbook

    Simple, lightweight front-end UI framework Get Start : http://www.bookcss.com Introduce Hbook focus ...

  3. 基于ES6模块标准通过webpack打包HTM5项目

    本篇主要演示通过webpack打包phaser项目,webpack安装方法在此处就不一一赘述了 经常用phaser来写html5游戏的朋友可能会发现,当游戏场景比较多时,如果都写在一个js文件中那么将 ...

  4. Struts2初步接触

      使用idea快速搭建Struts2的Maven项目    首先使用intelij idea部署Maven项目 1.jar包引入 pom.xml 我们用的是阿里云 我用的是最新版的Struts2核心 ...

  5. UITableView多层展开与收起

    规则要求: tableview 有多层,类似于xcode文件目录的层级关系,每一个最开始展示的层姑且称之为根目录吧,并且,每个根目录下的层数不定. 与文件目录类似,每个目录下可以有不同层级的目录同时展 ...

  6. ABP Zero 单部署,单数据库,多租户架构

    首先,我们应该定义多租户系统中的两个条目: 租主(Host):租主是单例的(只有一个租主).租主会对创建和管理租户负责.因此,一个“租主用户”比所有的租户等级更高,并独立于所有租户,同时还能控制他们. ...

  7. Javascript学习十

    认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...

  8. git如何解决冲突(代码托管在coding)

    分支A提交合并请求到分支B,有冲突 git fetch code 拉取远程仓库的其他分支代码(我拉代码是remote add code所以这里是code,可以用git remote查看) git ch ...

  9. Token在android中的使用

    首先Token是一个怎么样的东西,Token存在的意义又在哪里?学过php或是其他web开发的人都知道一个东西叫session和cookie,这些东西可以在服务器或是本地保存一些东西,比如说登录状态, ...

  10. 极光推送助推视频App,打造最活跃手机新媒体平台

    移动应用能够帮助吸引更多的新用户,增加用户互动和对话.但你得让用户想起你,如何在一部手机上数十个App中脱颖而出,是考验App运营的关键之处.为了打造一个成功的App,开发者需要着眼长远,不应局限于其 ...