重走py 之路 ——普通操作与函数(三)

前言

本节主要介绍函数,但是函数是由操作组成的。那么就分为两部,一部分为操作一部分为函数。

正文

py世界中的操作。

操作

if:

在学习任何一门语言中,关系if,要关系另外一件事,那就是if是否只能判断bool,还是可以判断其他的,比如说1或者0。

if 1:
    print("good");

输出:good.

看了py 中if是对bool进行扩展了。

再来看:

if "":
    print("good");
if "123":
    print("123good");

输出:"123good"
看了其对空字符的是一个false状态

if None:
    print("none");

没有任何输出,那么其对None 是false状态,在这里说明一下py中没有Null,只有None。

那么看下其对列表和集合的态度是怎么样的。

list=[]
a={};
if list:
    print("not none");
else:
    print("none")
if a:
    print("not none");
else:
    print("none")

返回两个none,说明其还会根据len来做判断,非常友好的一个东西。

那么在if中或和且是否是我们原来熟悉的&&还有||呢?

在这里说明一下,py的语义化太好了,直接使用and 和or 来说明。

比如说:

list=[]
if 'good' in list:
    print("have good");
elif ('not good' in list or 'sleep' in list) and 'name' in list:
     print("not good");

上面可以看出else if 用elif来替代。list是否包含某个字符,可以直接用in来操作。

输入:

在前面和上续中,有很多print,也就是输出,那么如何输入呢?

name = input("please say your name:");
print(name);

输入和输出:

please say your name:11
11

在这里说明一点,就是上面name的等于号,一定要有空格,这个py的规范,否则将会出现异常。

其他一些操作:
while 和其他语言一样,但是得记得while后面加:,例如:

while true:
  pass

函数

在很多语言中,函数都是非常关键的东西,因为你不可能一行写到尾。

def printName(firstName,lastName):
   print("firstName:"+firstName+"lastName:"+lastName);
printName("firstName","lastName");

输出:firstName:firstNamelastName:lastName

那么学了这么多语言,要思考的问题是py到底能不能设置参数默认值,或者能不能显示传参。

def printName(firstName,lastName):
   print("firstName:"+firstName+"lastName:"+lastName);
printName(firstName="firstName",lastName="lastName");

事实证明是可以显示传参的,同样也是可以有默认值的。

def printName(firstName,lastName="tom"):
   print("firstName:"+firstName+"lastName:"+lastName);
printName(firstName="firstName");

这样就可以。现在我们发现一个问题,那就是printName 在调用的时候没有信息,那么我们需要加上注释:

def printName(firstName,lastName="tom"):
   """
   printName 输出名字
   args:
     firstName string  
     lastName string
   return:
      none
   """
   print("firstName:"+firstName+"lastName:"+lastName);
printName(firstName="firstName");

那么看下什么效果:

是的,这样对于团队协作来说好太多了。

同样函数值得关注的还有是否可以传递任意数量的实参。

def printName(*name):
   """
   printName say name
   args:
     firstName string  
     lastName string
   return:
      none
   """
   print("firstName:"+name[0]+"lastName:"+name[1]);
printName("firstName","lastname");

这样似乎就可以了,*name,表示建立一个元组,传递任意的参数将会组成一个元组。

那么任意数量的实参是不是只能是数组呢?如果你在加一个*的话,那么你可以传递字典。

def printName(**name):
   """
   printName say name
   args:
     firstName string  
     lastName string
   return:
      none
   """
   print(name);
printName(firstName="firstName",lastname="lastname");

输出:{'lastname': 'lastname', 'firstName': 'firstName'}

next 类和模块

posted @ 2020-12-06 02:47  敖毛毛  阅读(111)  评论(0编辑  收藏  举报