#!/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. jQuery动态生成不规则表格前后端

    一.需求:有这么一张表 前四个属性当作联合主键 需要把该表所有的行在前端以表格形式显示出来,要求activityId相同时合并成一行,activityCode相同时,合并一行,activityVers ...

  2. web前端学习路线推荐(讲的很细致)

    前端要学习三个部分:HTML,CSS,JavaScript(简称JS),因此首先明确三个概念:HTML是内容层,它的目的是表示一个HTML标签在页面里是个什么角色. CSS是样式层,它的目的是表示一块 ...

  3. asp.net EF+MVC+Bootstrap 通用后台管理系统

    需要源码,请加QQ:858-048-581 开发环境: VS2012或以上 数据库: SQL Server 2008R2或以上   基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级 ...

  4. MySQL优化二(连接优化和缓存优化)

    body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...

  5. iOS 推送问题全解答《十万个为啥吖?》

    Q 1:为啥收不到推送(1)? 如果收到推送时,App 在前台运行,那么: iOS 10 before 顶部横幅不会弹出.没有任何展示,你以为「没有收到推送」. iOS 10 after 如果没有实现 ...

  6. HTML,login文本框·

    列子: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...

  7. 记录一次EF优化

    问题描述:1.第一次加载过慢(EntityFramework 6 code-first).2.一段时间间不访问页面同样变慢. 原因分析:1.第一次启动(Code First)会对比程序中的Model与 ...

  8. click和onclick本质的区别

    原生javascript的click在w3c里边的阐述是DOM button对象,也是html DOM click() 方法,可模拟在按钮上的一次鼠标单击. button 对象代表 HTML 文档中的 ...

  9. ASP.NET脚本过滤-防止跨站脚本攻击(收集别人的)

    ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力.当用户试图用<xxxx>之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个 HttpRe ...

  10. pageRank算法 python实现

    一.什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google 产品经理),因为他是这个算法的发明者之一,还是google CEO( ...