设为首页 收藏本站
查看: 1420|回复: 0

[经验分享] Python初体验之基础语法(三)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-29 12:25:09 | 显示全部楼层 |阅读模式
  所有测试语句基于Python 2.7.1
  自学Python,如果哪里说的不恰当,还请指正。谢谢。
  示例绝大部分来自博客园vamei的python教程
   部分内容来自廖雪峰的Python博客

1.函数参数  关键字传递



#! /usr/bin/env python
# coding=UTF-8
# 函数参数关键字传递 根据每个参数的名字传递参数-->无需遵照位置对应关系
# 可以与位置传递混用,但是直接的值传递的参数要出现在关键字参数之前
def sum(a, b, c):
return a + b + c
print "sum(1,b=2,c=3) = ", sum(1, b=2, c=3)
print "sum(c=3,b=4,a=5) = ", sum(c=3, b=4, a=5)
DSC0000.png
  

2.函数参数默认值



# 赋予参数默认值  如果调用函数时没有传递对应位置上的值,将使用默认值
def squre_sum(a, b, c=1):
return a ** a + b ** b + c ** c
print "squre_sum(2,3)=", squre_sum(2, 3)
print "squre_sum(2,3,4)=", squre_sum(2, 3, 4)
DSC0001.png
   定义默认参数要牢记一点:默认参数必须指向不变对象!
  否则重复调用函数时,并使用默认参数时,默认参数的值会发生改变。
  

3.函数参数 包裹传递 可变参数



# 函数参数包裹传递 不确定调用时会传递几个参数
# 包裹位置传递
def func(*name):
print type(name)
print name
print func(1, 2, 3)
print func(1, 2, 3, 4, 5)
DSC0002.png
  这里为什么每次都输出有None,还请知道的园友告知一下,谢谢。
  感谢园友 月缺一格 的指正,这里函数没有返回值,故默认返回None.
  



# 包裹关键字传递 dic是一个字典 收集所有的关键字传递给函数func_t
def func_t(**dic):
print type(dic)
print dic
print func_t(a=1, b=2)
print func_t(a=3, b=4, c=5)
DSC0003.png
  

4.解包裹



# 解包裹 *和** 也可以在调用的时候使用 ,即解包裹 unpacking
def func_m(a, b, c):
print a, b, c
args = (1, 2, 3)
# 在传递tuple时,让tuple的每一个元素对应一个位置参数,*提示Python去拆分
func_m(*args)
# 词典解包裹
dic = {'a': 11, 'b': 22, 'c': 33}
func_m(**dic)  # 得到value值
func_m(*dic)   # 得到key值
DSC0004.png
  

5.循环设计



string = 'xiaomi vs meizu'
for index in range(0, len(string), 1):
print string[index],
DSC0005.png
  分别定义上限start,下限stop和每次循环的步长step
DSC0006.png
  在python 2.x中,要使 print 不换行 在print语句最后加逗号(英文半角符号形式)
>>> print x,
  在python 3.x中,要使 print 不换行,写成如下格式
>>> print(x, end="")
  因为print函数的原型是



print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
  默认是以 \n 结尾,即换行。把 \n 替换为空字符串就行。
  



string = 'xiaomi vs meizu'
print '\n', '字符串长度:', len(string)
for (index, char) in enumerate(string):
print index,
print char,
DSC0007.png
  利用enumerate()函数,可以在每次循环中同时得到下标和元素,enumerate()在每次循环中,
  返回的是一个包含两个元素的定值表(tuple),两个元素分别赋予index和char。
  



a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
for (x, y, z) in zip(a, b, c):
print (x, y, z)
DSC0008.png
  如果你多个等长的序列,然后想要每次循环时从各个序列分别取出一个元素,可以利用zip()函数
  zip()函数的功能,就是从多个列表中,依次各取出一个元素。每次取出的(来自不同列表的)元素合成一个元组,
  合并成的元组放入zip()返回的列表中。zip()函数起到了聚合列表的功能。
  



a = [1, 2, 3]
b = [4, 5, 6]
# cluster 聚合
zipped = zip(a, b)
print '聚合列表:', zipped
# decompose 分解
ma, mb = zip(*zipped)
print '分解列表:', ma, mb
DSC0009.png
  
  小结:
  Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。
  默认参数一定要用不可变对象,如果是可变对象,运行会有逻辑错误!
  要注意定义可变参数和关键字参数的语法:
  *args是可变参数,args接收的是一个tuple;
  **kw是关键字参数,kw接收的是一个dict。
  以及调用函数时如何传入可变参数和关键字参数的语法:
  可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));
  关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。
  使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
  
  PS:
  首次安装PyCharm IDE会发现,在调试的输出窗口中文显示为乱码;
  这是因为工程默认的编码是GBk,而IDE的默认编码是UTF-8,
  打开File --> settings--> Editor -->File Encodings 选项卡
  将他们的编码统一一下,设置为支持中文的编码即可,如UTF-8。
DSC00010.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-144911-1-1.html 上篇帖子: Python——Matplotlib模块在Windows下安装 下篇帖子: [python]逆水行舟不进则退(1)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表